Skip to content

feat(database): add DATABASE_SSL environment variable for conditional… #43

feat(database): add DATABASE_SSL environment variable for conditional…

feat(database): add DATABASE_SSL environment variable for conditional… #43

Triggered via push March 17, 2026 18:40
Status Failure
Total duration 4m 32s
Artifacts 3

ci.yml

on: push
Backend — quality
57s
Backend — quality
Frontend — quality
1m 7s
Frontend — quality
Backend — integration tests
1m 2s
Backend — integration tests
Backend — E2E tests
58s
Backend — E2E tests
Playwright — UI E2E tests
3m 20s
Playwright — UI E2E tests
Fit to window
Zoom out
Zoom in

Annotations

10 errors, 6 warnings, and 1 notice
[chromium] › e2e/workflow.spec.ts:194:7 › Workflow — reject › approver can reject a READY_FOR_APPROVAL invoice: packages/frontend/e2e/workflow.spec.ts#L56
5) [chromium] › e2e/workflow.spec.ts:194:7 › Workflow — reject › approver can reject a READY_FOR_APPROVAL invoice Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:199:23
[chromium] › e2e/workflow.spec.ts:194:7 › Workflow — reject › approver can reject a READY_FOR_APPROVAL invoice: packages/frontend/e2e/workflow.spec.ts#L56
5) [chromium] › e2e/workflow.spec.ts:194:7 › Workflow — reject › approver can reject a READY_FOR_APPROVAL invoice AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:199:23
[chromium] › e2e/workflow.spec.ts:153:7 › Workflow — approve › approver can approve a READY_FOR_APPROVAL invoice: packages/frontend/e2e/workflow.spec.ts#L56
4) [chromium] › e2e/workflow.spec.ts:153:7 › Workflow — approve › approver can approve a READY_FOR_APPROVAL invoice Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:158:23
[chromium] › e2e/workflow.spec.ts:153:7 › Workflow — approve › approver can approve a READY_FOR_APPROVAL invoice: packages/frontend/e2e/workflow.spec.ts#L56
4) [chromium] › e2e/workflow.spec.ts:153:7 › Workflow — approve › approver can approve a READY_FOR_APPROVAL invoice AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:158:23
[chromium] › e2e/workflow.spec.ts:114:7 › Workflow — send to approval › approver can send a READY_FOR_VALIDATION invoice to approval: packages/frontend/e2e/workflow.spec.ts#L56
3) [chromium] › e2e/workflow.spec.ts:114:7 › Workflow — send to approval › approver can send a READY_FOR_VALIDATION invoice to approval Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:120:23
[chromium] › e2e/workflow.spec.ts:114:7 › Workflow — send to approval › approver can send a READY_FOR_VALIDATION invoice to approval: packages/frontend/e2e/workflow.spec.ts#L56
3) [chromium] › e2e/workflow.spec.ts:114:7 › Workflow — send to approval › approver can send a READY_FOR_VALIDATION invoice to approval AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:120:23
[chromium] › e2e/workflow.spec.ts:89:7 › Workflow — send to validation › uploader can send an EXTRACTED invoice to validation: packages/frontend/e2e/workflow.spec.ts#L56
2) [chromium] › e2e/workflow.spec.ts:89:7 › Workflow — send to validation › uploader can send an EXTRACTED invoice to validation Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:93:23
[chromium] › e2e/workflow.spec.ts:89:7 › Workflow — send to validation › uploader can send an EXTRACTED invoice to validation: packages/frontend/e2e/workflow.spec.ts#L56
2) [chromium] › e2e/workflow.spec.ts:89:7 › Workflow — send to validation › uploader can send an EXTRACTED invoice to validation AxiosError: Request failed with status code 403 54 | ); 55 | > 56 | const res = await axios.post(`${BACKEND_URL}/invoices/upload`, form, { | ^ 57 | headers: { 58 | Authorization: `*** 59 | 'Content-Type': 'multipart/form-data', at settle (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/settle.js:20:7) at IncomingMessage.handleStreamEnd (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/adapters/http.js:844:13) at Axios.request (/home/runner/work/InvoiceScan/InvoiceScan/node_modules/.pnpm/axios@1.13.6/node_modules/axios/lib/core/Axios.js:46:41) at uploadInvoice (/home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:56:15) at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/workflow.spec.ts:93:23
[chromium] › e2e/upload.spec.ts:78:7 › Upload page › successful upload triggers a redirect or success indicator: packages/frontend/e2e/upload.spec.ts#L96
1) [chromium] › e2e/upload.spec.ts:78:7 › Upload page › successful upload triggers a redirect or success indicator Retry #1 ─────────────────────────────────────────────────────────────────────────────────────── TimeoutError: locator.waitFor: Timeout 15000ms exceeded. Call log: - waiting for getByText(/uploaded successfully|invoice uploaded/i) to be visible 94 | page 95 | .getByText(/uploaded successfully|invoice uploaded/i) > 96 | .waitFor({ timeout: 15_000 }), | ^ 97 | ]); 98 | }); 99 | }); at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/upload.spec.ts:96:10
[chromium] › e2e/upload.spec.ts:78:7 › Upload page › successful upload triggers a redirect or success indicator: packages/frontend/e2e/upload.spec.ts#L96
1) [chromium] › e2e/upload.spec.ts:78:7 › Upload page › successful upload triggers a redirect or success indicator TimeoutError: locator.waitFor: Timeout 15000ms exceeded. Call log: - waiting for getByText(/uploaded successfully|invoice uploaded/i) to be visible 94 | page 95 | .getByText(/uploaded successfully|invoice uploaded/i) > 96 | .waitFor({ timeout: 15_000 }), | ^ 97 | ]); 98 | }); 99 | }); at /home/runner/work/InvoiceScan/InvoiceScan/packages/frontend/e2e/upload.spec.ts:96:10
Backend — quality
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, gitleaks/gitleaks-action@v2. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Frontend — quality
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Frontend — quality: packages/frontend/app/invoices/[id]/page.tsx#L456
Forbidden non-null assertion
Backend — E2E tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Backend — integration tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
Playwright — UI E2E tests
Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache@v4, actions/checkout@v4, actions/setup-node@v4, actions/upload-artifact@v4. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
🎭 Playwright Run Summary
5 failed [chromium] › e2e/upload.spec.ts:78:7 › Upload page › successful upload triggers a redirect or success indicator [chromium] › e2e/workflow.spec.ts:89:7 › Workflow — send to validation › uploader can send an EXTRACTED invoice to validation [chromium] › e2e/workflow.spec.ts:114:7 › Workflow — send to approval › approver can send a READY_FOR_VALIDATION invoice to approval [chromium] › e2e/workflow.spec.ts:153:7 › Workflow — approve › approver can approve a READY_FOR_APPROVAL invoice [chromium] › e2e/workflow.spec.ts:194:7 › Workflow — reject › approver can reject a READY_FOR_APPROVAL invoice 1 skipped 33 passed (1.7m)

Artifacts

Produced during runtime
Name Size Digest
gitleaks-results.sarif
383 Bytes
sha256:ad287010743121fea1bf39a867b03404457d48fd66c980a8788150a9cb9c55fb
playwright-report Expired
5.68 MB
sha256:6da249b284b9b71222c01b040df925e7faf2102e81abbd825174e7436ad280d4
playwright-results Expired
5.07 MB
sha256:b4a741dbf59bea866553a01256d4dfc818a87e927e354ab4cacbbdf61dc64327