From 60ddb475d79fbb5415f68516a6f409a14c4810cc Mon Sep 17 00:00:00 2001 From: dc Date: Sun, 27 Sep 2026 22:44:54 +0000 Subject: [PATCH] ci: run the hook-programs spec in the cypress job hook-programs.cy.ts was in no CI spec list, so it never ran - the only end-to-end coverage of the new mock hook execution (mockHookSource plus the PRE/POST_EDIT_HOOK blocks) and of the loader's target re-registration check was dead weight. Add it to the development job's --spec list. It goes second, not last: csv-limited.cy.ts asserts the free tier and so must keep the first slot (before any spec applies a licence key), and test 2 reads the approval queue, which is paged oldest first - a changeset submitted by an earlier spec pushes its own row off the first page. The spec header records the constraint. Full list verified locally: 15 specs, 132 tests, all passing. --- .gitea/workflows/build.yaml | 2 +- client/cypress/e2e/hook-programs.cy.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 83f507e..969a8aa 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -163,7 +163,7 @@ jobs: # Start frontend and run cypress # timeout 1800: SIGTERM after 30 min so Cypress can flush video/screenshots # before the outer timeout-minutes hard-kills the step (avoids silent multi-hour hangs) - npx ng serve --host 0.0.0.0 --port 4200 & npx wait-on http://localhost:4200 && timeout 1800 npx cypress run --browser chrome --spec "cypress/e2e/csv-limited.cy.ts,cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel-multi-load.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/csv.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/filter-panel.cy.ts,cypress/e2e/licensing.cy.ts,cypress/e2e/viewer-labels.cy.ts,cypress/e2e/full-table-search.cy.ts,cypress/e2e/viewbox.cy.ts,cypress/e2e/stage.cy.ts,cypress/e2e/browser-info.cy.ts" + npx ng serve --host 0.0.0.0 --port 4200 & npx wait-on http://localhost:4200 && timeout 1800 npx cypress run --browser chrome --spec "cypress/e2e/csv-limited.cy.ts,cypress/e2e/hook-programs.cy.ts,cypress/e2e/liveness.cy.ts,cypress/e2e/editor.cy.ts,cypress/e2e/excel-multi-load.cy.ts,cypress/e2e/excel.cy.ts,cypress/e2e/csv.cy.ts,cypress/e2e/filtering.cy.ts,cypress/e2e/filter-panel.cy.ts,cypress/e2e/licensing.cy.ts,cypress/e2e/viewer-labels.cy.ts,cypress/e2e/full-table-search.cy.ts,cypress/e2e/viewbox.cy.ts,cypress/e2e/stage.cy.ts,cypress/e2e/browser-info.cy.ts" - name: Zip Cypress videos if: always() diff --git a/client/cypress/e2e/hook-programs.cy.ts b/client/cypress/e2e/hook-programs.cy.ts index 0b56696..408ec14 100644 --- a/client/cypress/e2e/hook-programs.cy.ts +++ b/client/cypress/e2e/hook-programs.cy.ts @@ -1,6 +1,12 @@ // Marks this file as an ES module (rather than a global script) so its // top-level consts don't collide, under the TS type-checker, with the same // names declared in other spec files. +// +// RUN ORDER MATTERS, and build.yaml reflects it: this spec must run after +// csv-limited.cy.ts (which asserts the free tier and so needs the first slot, +// before any spec applies a licence key) and before every spec that submits a +// changeset. Test 2 reads the approval queue, which is paged oldest first, and +// a changeset submitted by an earlier spec pushes this one off the first page. export {} const hostUrl = Cypress.env('hosturl')