diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 9f53f4ef..2ad52f61 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -65,7 +65,7 @@ {"id":"ge-hch.1.8.1","title":"Implement: Risk","description":"Implement: Risk - code, prefabs, editor scripts as required.\\n\\n## Acceptance Criteria\\n- Implementation produces the minimal functionality described in the feature acceptance criteria.\\n\\n## Minimal Implementation\\n- Deliver the smallest end-to-end code required.","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-03T20:44:45.80003094-08:00","created_by":"rgardler","updated_at":"2026-01-03T20:44:45.80003094-08:00","dependencies":[{"issue_id":"ge-hch.1.8.1","depends_on_id":"ge-hch.1.8","type":"parent-child","created_at":"2026-01-03T20:44:45.801328409-08:00","created_by":"rgardler"}]} {"id":"ge-hch.1.8.2","title":"Tests: Risk","description":"Tests: Risk - create automated tests (browser unit / integration / E2E) required by feature.\\n\\n## Acceptance Criteria\\n- Tests exist and pass locally and in CI.\\n\\n## Minimal Implementation\\n- Add at least one browser E2E test covering feature behavior.","status":"open","priority":1,"issue_type":"task","created_at":"2026-01-03T20:44:45.853194129-08:00","created_by":"rgardler","updated_at":"2026-01-06T22:00:25.333147223-08:00","dependencies":[{"issue_id":"ge-hch.1.8.2","depends_on_id":"ge-hch.1.8","type":"parent-child","created_at":"2026-01-03T20:44:45.854214358-08:00","created_by":"rgardler"}]} {"id":"ge-hch.1.8.3","title":"Docs: Risk","description":"Docs: Risk - write short runbook/docs.\\n\\n## Acceptance Criteria\\n- Docs explain how to run, test, and validate the feature.\\n\\n## Minimal Implementation\\n- Add section to docs or feature README.","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-03T20:44:45.904222604-08:00","created_by":"rgardler","updated_at":"2026-01-03T20:44:45.904222604-08:00","dependencies":[{"issue_id":"ge-hch.1.8.3","depends_on_id":"ge-hch.1.8","type":"parent-child","created_at":"2026-01-03T20:44:45.905057899-08:00","created_by":"rgardler"}]} -{"id":"ge-k3p","title":"CI: Playwright E2E workflow","description":"Add GitHub Actions workflow to run Playwright E2E (demo) on PRs and main.\\n\\n## Scope\\n- CI job to install dependencies (npm ci) and Playwright browsers (npx playwright install).\\n- Run npm run test:unit and npm run test:demo (start-server-and-test) on linux runner.\\n- Upload Playwright artifacts (videos, traces, screenshots) on failure.\\n- Trigger on pull_request to main and push to main; allow workflow_dispatch.\\n- Keep runtime reasonable (consider single-project run on PR, full matrix optional on main).\\n\\n## Acceptance Criteria\\n- Workflow file exists in .github/workflows and runs successfully in CI.\\n- Playwright browsers installed via npx playwright install (with deps).\\n- npm run test:unit and npm run test:demo succeed in CI or fail the build.\\n- Artifacts (test-results) uploaded on failure for debugging.\\n","status":"open","priority":1,"issue_type":"chore","created_at":"2026-01-07T00:02:19.895681457-08:00","created_by":"rgardler","updated_at":"2026-01-07T00:04:26.978952669-08:00"} +{"id":"ge-k3p","title":"CI: Playwright E2E workflow","description":"Add GitHub Actions workflow to run Playwright E2E (demo) on PRs and main.\\n\\n## Scope\\n- CI job to install dependencies (npm ci) and Playwright browsers (npx playwright install).\\n- Run npm run test:unit and npm run test:demo (start-server-and-test) on linux runner.\\n- Upload Playwright artifacts (videos, traces, screenshots) on failure.\\n- Trigger on pull_request to main and push to main; allow workflow_dispatch.\\n- Keep runtime reasonable (consider single-project run on PR, full matrix optional on main).\\n\\n## Acceptance Criteria\\n- Workflow file exists in .github/workflows and runs successfully in CI.\\n- Playwright browsers installed via npx playwright install (with deps).\\n- npm run test:unit and npm run test:demo succeed in CI or fail the build.\\n- Artifacts (test-results) uploaded on failure for debugging.\\n","status":"in_progress","priority":1,"issue_type":"chore","created_at":"2026-01-07T00:02:19.895681457-08:00","created_by":"rgardler","updated_at":"2026-01-07T00:14:35.732301533-08:00","comments":[{"id":11,"issue_id":"ge-k3p","author":"rgardler","text":"Added GitHub Actions workflow .github/workflows/playwright.yml: checkout, setup-node 20 with npm cache, npm ci, npx playwright install --with-deps, npm run test:unit, npm run test:demo, upload artifacts on failure. Local run: npm test (unit + demo) passing.","created_at":"2026-01-07T08:18:39Z"},{"id":12,"issue_id":"ge-k3p","author":"rgardler","text":"Opened PR https://github.com/TheWizardsCode/GEngine/pull/97 for Playwright CI workflow. Summary: checkout, setup-node 20 with npm cache, npm ci, npx playwright install --with-deps, npm run test:unit, npm run test:demo, upload artifacts on failure. Local: npm test passed.","created_at":"2026-01-07T08:19:11Z"}]} {"id":"ge-ngf","title":"CI: Playwright E2E","description":"Add GitHub Actions workflow to run Playwright E2E tests.\\n\\nAcceptance criteria:\\n- Workflow file .github/workflows/playwright.yml runs on PRs and main.\\n- Workflow runs: npm ci, npx playwright install, npm test (demo e2e).\\n- On PR a job runs tests and reports status to PR.","status":"open","priority":1,"issue_type":"task","assignee":"rgardler","created_at":"2026-01-06T23:08:53.428619454-08:00","created_by":"rgardler","updated_at":"2026-01-06T23:08:53.428619454-08:00"} {"id":"ge-nzz","title":"Make root README InkJS-only","description":"Remove Unity references from the root README.md and focus it on InkJS/web demo usage and tests.","status":"closed","priority":1,"issue_type":"task","created_at":"2026-01-06T15:12:16.621516991-08:00","created_by":"rgardler","updated_at":"2026-01-06T15:13:37.065401561-08:00","closed_at":"2026-01-06T15:13:37.065401561-08:00","close_reason":"Done"} {"id":"ge-osd","title":"Restore original demo story for smoke tests","status":"closed","priority":1,"issue_type":"bug","created_at":"2026-01-06T22:09:37.056596959-08:00","created_by":"rgardler","updated_at":"2026-01-06T22:10:00.371743266-08:00","closed_at":"2026-01-06T22:10:00.371743266-08:00","close_reason":"Done","comments":[{"id":1,"issue_id":"ge-osd","author":"rgardler","text":"Fixed smoke tests broken by demo story changes by adding web/stories/test.ink (pre-903f044 demo story) and routing /stories/demo.ink to that file in Playwright.\n\nChanges:\n- web/stories/test.ink\n- tests/demo.smoke.spec.ts\n\nCommands:\n- npm test","created_at":"2026-01-07T06:09:54Z"}]} diff --git a/.github/workflows/playwright.yml b/.github/workflows/playwright.yml new file mode 100644 index 00000000..60ee8a2c --- /dev/null +++ b/.github/workflows/playwright.yml @@ -0,0 +1,45 @@ +name: Playwright E2E + +on: + workflow_dispatch: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + tests: + runs-on: ubuntu-latest + env: + CI: true + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + + - name: Install dependencies + run: npm ci + + - name: Install Playwright browsers + run: npx playwright install --with-deps + + - name: Run unit tests + run: npm run test:unit + + - name: Run demo E2E tests + run: npm run test:demo + + - name: Upload Playwright artifacts + if: failure() + uses: actions/upload-artifact@v4 + with: + name: playwright-test-results + path: | + test-results/** + playwright-report/** + if-no-files-found: ignore