Same class as #115 (fixed for LHCI in #124): in monorepo layout, templates/test/playwright/.github/** and templates/cicd/github-actions/*/.github/** are copied into apps/web/.github/workflows/, where GitHub never runs them.
Unlike LHCI, these can't just be relocated with the existing copyDir ghRoot redirect — their run steps assume the app directory (npx playwright test needs playwright.config.ts, the deploy workflow's wrangler steps need the app's wrangler config), so moving them without working-directory: apps/web adjustments would swap silent non-execution for loud CI failures.
Suggested fix, mirroring #124:
- pass
ghRoot = destDir for the test and cicd copies in Scaffold when cfg.Layout.IsMonorepo()
- make both workflow templates layout-aware:
working-directory: apps/web on the app-scoped steps, root-scoped install, and a paths filter so api-only PRs skip them
- extend the render tests with monorepo cases pinning placement + content (the
lhci_monorepo case in pkg/render_test.go is the pattern)
Same class as #115 (fixed for LHCI in #124): in monorepo layout,
templates/test/playwright/.github/**andtemplates/cicd/github-actions/*/.github/**are copied intoapps/web/.github/workflows/, where GitHub never runs them.Unlike LHCI, these can't just be relocated with the existing
copyDirghRootredirect — their run steps assume the app directory (npx playwright testneedsplaywright.config.ts, the deploy workflow's wrangler steps need the app's wrangler config), so moving them withoutworking-directory: apps/webadjustments would swap silent non-execution for loud CI failures.Suggested fix, mirroring #124:
ghRoot = destDirfor the test and cicd copies inScaffoldwhencfg.Layout.IsMonorepo()working-directory: apps/webon the app-scoped steps, root-scoped install, and apathsfilter so api-only PRs skip themlhci_monorepocase in pkg/render_test.go is the pattern)