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')