Skip to content

CI: run typecheck, lint & Vitest suites on pull requests#47

Open
nojibe wants to merge 1 commit into
claude/vitest-migration-45from
claude/ci-quality-gates-33
Open

CI: run typecheck, lint & Vitest suites on pull requests#47
nojibe wants to merge 1 commit into
claude/vitest-migration-45from
claude/ci-quality-gates-33

Conversation

@nojibe

@nojibe nojibe commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Closes #33

Stacking

This PR is stacked on #46 (the Jest→Vitest migration, issue #45), so its base is claude/vitest-migration-45 and the diff is limited to the single new workflow file. Once #46 merges, GitHub will automatically retarget this PR to main.

Summary

Adds .github/workflows/ci.yml — a CI workflow that runs the project's quality gates on pull requests and on pushes to main.

  • Triggers: pull_request and push to main, both with paths-ignore for **/*.md and docs/** (mirrors e2e.yml).
  • Concurrency: group keyed on github.ref with cancel-in-progress: true.
  • Common setup (each job): checkout → pnpm/action-setup@v4actions/setup-node@v4 with node-version-file: '.nvmrc' (Node 18) and cache: pnpmpnpm install --frozen-lockfile.
  • Gates as separate parallel jobs so failures are isolated:
    • typecheckpnpm typecheck
    • lintpnpm lint (guarded; see caveat)
    • test-webpnpm test:web
    • test-clipnpm test:cli

Verified locally (on this branch)

  • YAML is well-formed.
  • All four referenced scripts exist in package.json.
  • pnpm typecheck → passes (exit 0).
  • pnpm test:web → 49 files, 596 passed / 1 skipped.
  • pnpm test:cli → 45 files, 519 passed / 1 skipped.

Lint caveat

The repo currently ships no ESLint config (.eslintrc* / eslint.config.*) and no eslint / eslint-config-next devDependencies. As a result next lint prompts interactively ("How would you like to configure ESLint?") and would hang CI — confirmed locally even with stdin closed.

To avoid hanging CI or failing every PR over a pre-existing gap that is out of scope for this ticket, the lint job is guarded: it runs pnpm lint only when an ESLint config is present, otherwise it emits a GitHub warning annotation and passes. The other three gates are unaffected and fully enforced. Once an ESLint config and the corresponding devDependencies are added (best tracked as a separate follow-up), the guard becomes a no-op and lint runs normally.

🤖 Generated with Claude Code

https://claude.ai/code/session_01T9z5V7UM3FhqomggQ3XTVG


Generated by Claude Code

Add a CI workflow that runs the quality gates on pull requests and on
pushes to main. Separate jobs (typecheck, lint, test-web, test-cli) run
in parallel so failures are isolated, each performing the common setup
(checkout, pnpm, Node from .nvmrc, frozen install) then its one command.

The lint job is guarded: the repo currently ships no ESLint config, so
`next lint` would prompt interactively and hang CI. When no config is
present the job emits a warning and passes instead of hanging; it lints
normally once an ESLint config and deps are added.

Closes #33

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T9z5V7UM3FhqomggQ3XTVG
@railway-app

railway-app Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

🚅 Deployed to the app-pr-47 environment in weval

Service Status Web Updated (UTC)
weval-app ✅ Success (View Logs) Web Jul 1, 2026 at 5:12 pm

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