Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
2c25c8c
improvement(ci): parallelize audit+prepare, add caching, share build …
yokoszn Apr 10, 2026
b4340e2
improvement(ci): add concurrency groups, enable Turbo cache, wire rem…
yokoszn Apr 10, 2026
f5d5d7d
fix(ci): use cancel-in-progress: false for snapshot releases
yokoszn Apr 10, 2026
2c7c336
improvement(ci): affected-only build, typecheck, and unit tests on PRs
yokoszn Apr 10, 2026
3220a84
fix(ci): remove affected filter from prepare, fix app exclusion in test
yokoszn Apr 10, 2026
8aad5d3
fix(ci): replace cache: 'yarn' with explicit .yarn/cache step
yokoszn Apr 10, 2026
a623e23
fix(ci): include packages/*/generated/ in build artifact
yokoszn Apr 10, 2026
f5b3e27
docs(ci-spec): sync Phase 0 and snapshot concurrency with actual impl…
yokoszn Apr 10, 2026
49adae2
fix(ci): track gitignored generated/ in Turbo build input hash
yokoszn Apr 10, 2026
60affd7
feat(ci): Phase 3+4 — affected-only integration tests and 5-shard Pla…
yokoszn Apr 10, 2026
6f17678
perf(ci): skip audit when yarn.lock is unchanged
yokoszn Apr 10, 2026
00743da
perf(ci): cache node_modules to eliminate 85s yarn install per job
yokoszn Apr 10, 2026
09b69ae
perf(ci): use Microsoft Playwright container for integration job
yokoszn Apr 10, 2026
7784240
fix(ci): revert Playwright container — breaks Docker-in-Docker for ep…
yokoszn Apr 10, 2026
c2df320
perf(ci): shard full-suite runs on PRs, not just pushes
yokoszn Apr 11, 2026
4ec4fe6
ci: opt into Node.js 24 actions runtime, fix merge-coverage on missin…
yokoszn Apr 11, 2026
3168c85
ci: add lint job, share app build across shards, fix merge-coverage exit
yokoszn Apr 11, 2026
ced6776
perf(ci): parallel integration, 15 shards, fix lint and distDir
yokoszn Apr 13, 2026
7068426
fix(ci): tar app build before upload to avoid colon-in-filename error
yokoszn Apr 13, 2026
dbc0ccb
perf(ci): skip docker-build and app build for CI-only PRs, run docker…
yokoszn Apr 14, 2026
a29cb2b
ci: upgrade actions to Node.js 24-native versions
yokoszn Apr 14, 2026
7b83cf0
fix(ci): restore test:scripts step and OM_WEBHOOKS_ALLOW_PRIVATE_URLS
yokoszn Apr 15, 2026
789dd74
fix(ci): catch all workspace modules; fix coverage double-counting
yokoszn Apr 16, 2026
899c620
fix(ci): restore docker action versions to latest (v4/v7)
yokoszn Apr 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions .ai/qa/tests/playwright.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,33 @@ const STATIC_TEST_IGNORES = [
`${normalizePath(path.join(projectRoot, '.codex'))}/**`,
];
const discoveredSpecs = discoverIntegrationSpecFiles(projectRoot, path.join(projectRoot, '.ai', 'qa', 'tests'));
const discoveredSpecPaths = discoveredSpecs.map((entry) => entry.path);

// Affected-only: when OM_INTEGRATION_MODULES is set, restrict to those modules.
// A spec is included if its moduleName is in the set, or any of its requiredModules is.
// Specs with moduleName === null (legacy .ai/qa/tests/ root specs) are always included.
const affectedModules = process.env.OM_INTEGRATION_MODULES
? new Set(
process.env.OM_INTEGRATION_MODULES.split(',')
.map((m) => m.trim().toLowerCase())
.filter(Boolean),
)
: null;

const filteredSpecs =
affectedModules && affectedModules.size > 0
? discoveredSpecs.filter((spec) => {
if (spec.moduleName === null) return true;
if (affectedModules.has(spec.moduleName.toLowerCase())) return true;
if (spec.requiredModules.some((m) => affectedModules.has(m.toLowerCase()))) return true;
return false;
})
: discoveredSpecs;

const filteredSpecPaths = filteredSpecs.map((entry) => entry.path);

export default defineConfig({
testDir: projectRoot,
testMatch: discoveredSpecPaths.length > 0 ? discoveredSpecPaths : ['.ai/qa/tests/__no_tests__/*.spec.ts'],
testMatch: filteredSpecPaths.length > 0 ? filteredSpecPaths : ['.ai/qa/tests/__no_tests__/*.spec.ts'],
testIgnore: [
...STATIC_TEST_IGNORES,
],
Expand Down
611 changes: 611 additions & 0 deletions .ai/specs/2026-04-10-ci-cd-performance.md

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,19 @@ apps/docs/.docusaurus
Dockerfile
docker-compose*.yml

# Test files
# Test files and testing utilities (not used in production builds)
**/*.test.ts
**/*.test.tsx
**/*.spec.ts
**/*.spec.tsx
**/__tests__
**/tests
**/testing/

# CI-only scripts (not used during Docker builds)
scripts/merge-coverage.mjs
scripts/i18n-check-sync.ts
scripts/i18n-check-usage.ts

# Development certificates
certs
Expand Down
Loading
Loading