Skip to content

Conversation

@patchmemory
Copy link
Owner

@patchmemory patchmemory commented Jan 8, 2026

Title: E2E foundation, contracts, and CI

Summary

  • Implements Playwright E2E scaffold with smoke + core flow specs (browse, scan)
  • Adds minimal API contracts for /api/scan, /api/scans//status, /api/directories
  • Aligns Dev CLI timestamps to timezone-aware ISO8601
  • Adds stable data-testid hooks to UI templates
  • Wires CI for pytest and strict E2E smoke
  • Updates docs/testing.md with quickstarts and CI notes

Related

  • Story: story:e2e-testing
  • Phase: 02–03
  • Task(s):
    • task:e2e:02-playwright-scaffold (Done)
    • task:e2e:03-core-flows (partially addressed by initial specs; remaining flows in next branch)

Local verification

  • Python tests: python -m pytest -q → green
  • Playwright E2E: npm install && npx playwright install --with-deps && npm run e2e → green

CI

  • GitHub Actions workflow runs:
    • Python tests (3.11)
    • E2E smoke (Node 18) — strict, SCIDK_PROVIDERS=local_fs

How to run locally

  • API contracts: python -m pytest tests/contracts/test_api_contracts.py -q
  • E2E: npm run e2e (uses e2e/global-setup.ts to boot the Flask server)

Risk assessment

  • Low risk. Mostly additive tests/config/docs. UI changes limited to data-testid attributes.

Merge checklist

  • pytest green locally
  • E2E green locally
  • CI expected to pass (strict E2E)
  • task:e2e:02-playwright-scaffold marked Done with completed_at
  • Reviewer sanity pass on docs/testing.md and CI workflow

Post-merge (follow-up branch)

  • Expand Phase 03 core flows E2E and refine contracts as needed.

… Ready Queue no longer includes scaffold task at top. Ensure Dev CLI timestamps align (complete_task uses timezone-aware ISO8601).
…ontracts, CI tighten, docs

- Add Playwright config/global setup already in repo; add browse.spec.ts and scan.spec.ts specs using stable data-testid hooks
- Fix scan E2E assertions to avoid regex pitfalls and allow multiple occurrences
- Add API contracts for /api/scan, /api/scans/<id>/status, /api/directories
- Make E2E job strict in CI; document in docs/testing.md and add PR template
- Align Dev CLI timestamps and finalize task:e2e:02-playwright-scaffold bookkeeping
@patchmemory
Copy link
Owner Author

E2E implemented and built into dev cycle using Playwright and automations, and all tests are passing.

…); chore: add pytest markers; deps: playwright, pytest-playwright, requests in pyproject optional [dev] and requirements.txt; ci: add GitHub Actions e2e workflow
…eutil runtime deps; add optional llm extras; e2e: add Makefile targets and README docs for Playwright tests
… (7687). Docs: update instructions to access UI at :7474 and connection notes.
… container; align mounts with Neo4j Docker volume guidelines
… with APOC only; update Singularity def accordingly. Docs in dev/ remain in submodule and were not committed here.
…al Playwright tmp/cache; Makefile E2E targets; add bootstrap-dev.sh; pin E2E downloads path in tests/e2e/conftest.py
…k.toml folder-config precedence; annotations REST endpoints with pagination/privacy; UI tweaks; tighten pytest markers
…; map/datasets testids; align E2E selectors; add persistence E2E; add folder-config/annotations/selective-cache tests; update pytest markers in pyproject
…test-runs, playwright-report, test-results, pytest-of-patch, sqlite:/, (pwd)/); prevent staging transient files
…test-runs, playwright-report, test-results, pytest-of-patch, sqlite:/, (pwd)/); prevent staging transient files
…ixture (imports os/sys/collections, adds foo() and Bar class, and module docstring). Ensure unit tests pass locally.
- E2E: use stable data-testids for graph and scan workflows
- tests: pin E2E to Chromium and repo-local PLAYWRIGHT_BROWSERS_PATH
- Makefile: unit/integration/e2e use repo-local TMPDIR and pytest --basetemp
- CI: matrix tiers set TMPDIR and --basetemp; upload E2E artifacts on failure
- git: untrack stray sqlite:/:memory:; .gitignore guards repo-local artifacts
… browsers repo-locally; pin Ubuntu runner to 22.04; keep TMPDIR and --basetemp repo-local across tiers
…; remove deprecated action; keep repo-local TMPDIR/--basetemp
… e2e job; keep repo-local TMPDIR and --basetemp
…hromium with deps via npx; keep repo-local paths
…re install; use repo-local TMP/TMPDIR/TEMP and PLAYWRIGHT_BROWSERS_PATH; remove invalid pytest flag
patchmemory and others added 13 commits January 12, 2026 14:44
…ackage; ensure repo-local TMPDIR/TMP/TEMP and PLAYWRIGHT_BROWSERS_PATH; fix chromium missing executable on Actions
…add requests to runtime deps; align pytest markers\n- requirements.txt/requirements-dev.txt: add helpers for installs\n- README.md: quickstart and testing docs updates (avoid installing pyproject.toml)\n- remove stray test-results/.last-run.json
…n- tests/test_providers_api.py: mark test_list_providers, test_browse_local_root\n- tests/contracts/test_api_contracts.py: mark test_provider_roots_contract_local_fs, test_browse_contract_local_fs_root_listing\n\nEnsures these run under the integration tier with SCIDK_PROVIDERS=local_fs and are excluded from unit.
@patchmemory
Copy link
Owner Author

Took a while to get the e2e working correctly but all good now - especially with regard to all the playwright installs (alongside typical python). It may be more cumbersome than it's worth! Now, we do have all the installations working right and some learning on how to use CI workflows, as well.

@patchmemory patchmemory merged commit eb384bf into main Jan 12, 2026
2 checks passed
@patchmemory patchmemory deleted the task/task-e2e-02-playwright-scaffold branch January 12, 2026 22:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants