Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
2bdf2e9
CI: make E2E Playwright job strict (remove continue-on-error); verify…
patchmemory Jan 8, 2026
9a82bf5
E2E foundation complete: Playwright scaffold + core flow specs, API c…
patchmemory Jan 8, 2026
3718c4a
chore: bump dev submodule to ea9c050 (E2E planning + Dev CLI timestam…
patchmemory Jan 8, 2026
a222eb3
chore: bump dev submodule to latest
patchmemory Jan 12, 2026
c9e5efc
ci: add Node Playwright E2E workflow that installs Python deps before…
patchmemory Jan 12, 2026
0622dc4
ci: install Python deps before Playwright E2E to fix missing Flask in CI
patchmemory Jan 12, 2026
19e856a
test(e2e): add Playwright E2E scaffolding (conftest, scan+graph tests…
patchmemory Dec 5, 2025
b9cc494
deps: align pyproject and requirements; add neo4j, psutil, python-dat…
patchmemory Dec 5, 2025
6920ef6
compose: run Neo4j Workspace on host port 7474; map only Bolt from DB…
patchmemory Dec 5, 2025
d890e40
compose: fix workspace image to ghcr.io/neo4j/neo4j-workspace:latest …
patchmemory Dec 5, 2025
a7be9e8
compose: use GHCR Workspace image; add /import volume; docs: correct …
patchmemory Dec 5, 2025
6a6e179
compose: parameterize host bind dirs; default to ./data/neo4j and doc…
patchmemory Dec 5, 2025
c6c7adf
docker: replace GHCR Workspace with public neo4j/neo4j-browser; map 7…
patchmemory Dec 5, 2025
bdd39cf
docker-compose: expose 7474 on neo4j service; remove separate Browser…
patchmemory Dec 5, 2025
2054b33
Neo4j Docker: pin to 5.24.0-community, remove n10s, use NEO4J_PLUGINS…
patchmemory Dec 5, 2025
5ee4ca1
CI/tests: unify workflows on Python 3.12; add tiered matrix; repo-loc…
patchmemory Dec 18, 2025
e5c4bd2
Core: SQLite-backed state toggle + selective scan cache; strict .scid…
patchmemory Dec 18, 2025
c80468d
Interpreters/UI/Tests: ipynb streaming parse (ijson fallback to json)…
patchmemory Dec 18, 2025
96b12a7
gitignore: ignore repo-local E2E artifacts and accidental paths (dev/…
patchmemory Dec 18, 2025
1b6d07b
gitignore: ignore repo-local E2E artifacts and accidental paths (dev/…
patchmemory Dec 18, 2025
fc2e09f
tests: fix Python interpreter unit test by enriching sample_py_file f…
patchmemory Dec 18, 2025
f208777
tests(ci,e2e): stabilize Playwright E2E and repo-localize temp/cache
patchmemory Dec 18, 2025
2454e6c
ci: trigger tests on main/develop/release; drop master from push filters
patchmemory Dec 18, 2025
bc2667c
ci(e2e): remove deprecated Playwright action use and install Chromium…
patchmemory Dec 18, 2025
0afc0eb
ci(e2e): use npx playwright install-deps and install on ubuntu-latest…
patchmemory Dec 18, 2025
ef8417b
ci(e2e): remove invalid pytest flag --suppress-no-test-exit-code from…
patchmemory Dec 18, 2025
e385424
ci(e2e): install Playwright browsers via npx on CI; remove invalid py…
patchmemory Dec 19, 2025
eb924f6
ci(e2e): ensure TMPDIR exists before installing Playwright; install c…
patchmemory Dec 19, 2025
150820b
ci(e2e): fix Playwright install on GitHub Actions; create TMPDIR befo…
patchmemory Dec 19, 2025
86ddb0e
ci(e2e): install Playwright browsers via Python CLI to match Python p…
patchmemory Dec 19, 2025
f298ec2
ci: add Node Playwright E2E workflow that installs Python deps before…
patchmemory Jan 12, 2026
d1c49ec
chore: stage final changes for merge (deps/docs):\n- pyproject.toml: …
patchmemory Jan 12, 2026
427dae6
resolve: merge main, keep requests in dev deps only
patchmemory Jan 12, 2026
c6e1754
resolve: e2e test automation
patchmemory Jan 12, 2026
46e306d
resolve: e2e test automation
patchmemory Jan 12, 2026
74914e1
resolve: e2e test automation
patchmemory Jan 12, 2026
e33f588
resolve: e2e test automation, fix ci.yml
patchmemory Jan 12, 2026
b0a92de
resolve: e2e test automation, fix ci.yml
patchmemory Jan 12, 2026
0c26d24
tests: mark Flask HTTP tests as integration to align with CI tiers\n\…
patchmemory Jan 12, 2026
6d332ac
resolve: e2e test automation, fix ci.yml
patchmemory Jan 12, 2026
b547906
resolve: e2e test automation, fix ci.yml
patchmemory Jan 12, 2026
9926a6a
resolve: e2e test automation, fix ci.yml
patchmemory Jan 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
42 changes: 42 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
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/<id>/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
- [x] pytest green locally
- [x] E2E green locally
- [x] CI expected to pass (strict E2E)
- [x] 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.
63 changes: 63 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: Tests

on:
push:
branches: [ main, develop, release/** ]
pull_request:

jobs:
python-tests:
name: Python tests (pytest)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Upgrade pip and install Python deps
run: |
python -m pip install --upgrade pip
pip install -e .[dev]
- name: Run pytest (exclude E2E)
run: |
python -m pytest -q -m "not e2e"

e2e:
name: E2E smoke (Playwright)
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python (for Flask app)
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Upgrade pip and install Python deps
run: |
python -m pip install --upgrade pip
pip install -e .[dev]
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
- name: Install npm deps
run: npm ci
- name: Install Playwright browsers (with system deps)
run: npx playwright install --with-deps
- name: Run Playwright E2E
env:
# Keep E2E self-contained by only enabling local_fs provider
SCIDK_PROVIDERS: local_fs
run: npm run e2e
- name: Upload Playwright report (on failure)
if: failure()
uses: actions/upload-artifact@v4
with:
name: playwright-report
path: |
playwright-report/
test-results/
if-no-files-found: ignore
Empty file removed .github/workflows/e2e-tests.yml
Empty file.
64 changes: 0 additions & 64 deletions .github/workflows/tests.yml

This file was deleted.

19 changes: 15 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,18 @@ python3 -m venv .venv
source .venv/bin/activate
# fish:
source .venv/bin/activate.fish
pip install -r requirements.txt

# Recommended: install the package in editable mode
pip install -e . # runtime deps only
# or for development (tests, Playwright helpers, etc.)
pip install -e .[dev]
# alternatively, use the provided requirements files:
# pip install -r requirements.txt # runtime-only
# pip install -r requirements-dev.txt # dev extras (editable)
```

Note: do NOT run `pip install -r pyproject.toml`. pyproject.toml is not a requirements file; it is a build/metadata file. Use one of the commands above instead.

2) Initialize environment variables (recommended):
- bash/zsh:
```
Expand Down Expand Up @@ -167,16 +176,18 @@ Rclone provider (optional):
## Testing
We use pytest for unit and API tests.

Pytest is included in requirements.txt; after installing dependencies, run:
Quick start:
```
python3 -m pytest -q
```
Notes:
- If your shell doesn't expose a global `pytest` command (common in fish), using `python3 -m pytest` is the most reliable.
- You can still run `pytest -q` if your PATH includes the virtualenv's bin directory.

Conventions:
- Tests live in tests/ and rely on pytest fixtures in tests/conftest.py (e.g., Flask app and client).
Details:
- Full testing overview: docs/testing.md (tools, fixtures, mocking strategy, env vars, and how to run subsets)
- Pytest configuration lives in pyproject.toml (testpaths=tests, addopts=-q)
- Tests live in tests/ and rely on pytest fixtures in tests/conftest.py (e.g., Flask app and client)
- Add tests alongside new features in future cycles; see dev/cycles.md for cycle protocol.

## Notes
Expand Down
2 changes: 1 addition & 1 deletion dev
Submodule dev updated from 4264ff to 837127
Loading