Add CI: backend tests + frontend build#144
Merged
Merged
Conversation
GitHub Actions running pytest (Python 3.13) and the Vite frontend build on push/PR to main. Declares a [test] extra in pyproject for pytest + pytest-asyncio.
The blanket *.jsonl gitignore rule excluded tests/fixtures/codex/rollouts/ fixtures, so the codex source tests passed locally but failed on a clean checkout (CI) with FileNotFoundError. Add a .gitignore negation so the fixtures are tracked. Fixtures are fully synthetic (placeholder UUIDs/paths).
Silences the Node 20 deprecation warnings (checkout v5, setup-uv v6, setup-node v5) and gives the uv cache a real invalidation key.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds CI for the repository via GitHub Actions (
.github/workflows/ci.yml). Runs on push/PR tomain(plus manualworkflow_dispatch), with concurrency cancellation and read-only permissions. Two parallel jobs:uv venv --python 3.13→uv pip install -e ".[test]"→pytest tests/ -vnpm ci→npm run build(tsc -b && vite build) inweb/on Node 22It also declares a
[project.optional-dependencies]testextra inpyproject.toml(pytest,pytest-asyncio). These test deps were previously undeclared, so a freshuv pip install -e .produced an environment that couldn't run the suite.Why Python 3.13 only
pyproject.tomldeclaresrequires-python = ">=3.12", but the pinnedmemu-py==1.4.0actually requires>=3.13— a 3.12 install fails as unsatisfiable. CI therefore targets 3.13 (which is also what the dev environment runs). Consider bumpingrequires-pythonto>=3.13for accuracy (not done here to keep this PR scoped to CI).Verification
Both pipelines were reproduced locally with the exact CI commands against a clean environment:
npm ci): build succeeds (only a non-fatal chunk-size warning).Notes
npm run lintis intentionally not a gate (scope is tests + build). Easy to add as a step if desired.