feat(database): add DATABASE_SSL environment variable for conditional… #43
ci.yml
on: push
Backend — quality
57s
Frontend — quality
1m 7s
Backend — integration tests
1m 2s
Backend — E2E tests
58s
Playwright — UI E2E tests
3m 20s
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
|
|