Clone-native jaffle-shop + Playwright E2E + docs refresh#60
Closed
KKranthi6881 wants to merge 4 commits into
Closed
Clone-native jaffle-shop + Playwright E2E + docs refresh#60KKranthi6881 wants to merge 4 commits into
KKranthi6881 wants to merge 4 commits into
Conversation
Replaces the bundled jaffle-shop fixture (10+ YAMLs shipped inside the web-app bundle) with a clone-from-GitHub flow. Users who want the demo now clone `https://github.com/dbt-labs/jaffle-shop` and follow the same Local folder or Git URL path as any other real dbt repo. Changes: - Remove src/fixtures/jaffle-shop/ (all 11 YAMLs + README) - ImportDbtRepoDialog: drop Demo tab; default tab is now "git"; placeholder hints at dbt-labs/jaffle-shop as a known-good public URL - Shell palette: remove "Load jaffle-shop demo" command - Onboarding tour + welcome dialog: update copy to reflect the two paths - api-server comment tweaked ("git-URL import flow") Playwright E2E scaffold (new): - playwright.config.js — serial mode, chromium; webServer starts api-server on :3006 and Vite on :5173 with DM_ENABLE_DIRECT_APPLY=1 - e2e/global-setup.js — clones jaffle-shop once to test-results/jaffle-shop/ (respects OFFLINE=1; re-uses cached clone) - e2e/import-api.spec.js — backend contract for POST /api/dbt/import - e2e/critical-path.spec.js — always-on smoke (import local folder, apply dialog wired); full rename + autosave + auto-commit loop gated behind E2E_FULL=1 with documented selector TODOs - e2e/README.md — run instructions and clone-cache explanation CI: - .github/workflows/e2e-tests.yml — unit job + e2e job (needs: unit); installs core_engine via pip -e, api-server + web-app via npm ci, playwright install --with-deps chromium; uploads report on failure Docs: - README tutorial table row: "Nothing — want to try with a known-good dbt repo" → clone jaffle-shop walkthrough (5 min) - docs/getting-started.md Scenario 1: rewritten as "Clone jaffle-shop" using `git clone` + Git URL or Local folder - docs/tutorials/jaffle-shop-walkthrough.md: full rewrite with two entry options (in-UI git URL vs. local clone with edit-in-place), rename cascade, auto-commit, Apply-to-warehouse dry run, ⌘⇧E PNG export - CONTRIBUTING.md: full rewrite with bootstrap, run modes, test matrix - .gitignore: test-results/, playwright-report/, playwright/.cache/ package.json: - Add @playwright/test ^1.48.0 devDep - Add test:e2e / test:e2e:ui scripts Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
npm ci was failing because package.json added @playwright/test but the lock file wasn't regenerated. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The Python project's pyproject.toml lives at the repo top level (the datalex-cli distribution bundles core_engine via setuptools package discovery). packages/core_engine has no pyproject.toml of its own, so `pip install -e packages/core_engine` was failing. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… tool The e2e-tests.yml workflow cloned jaffle-shop fresh every PR and tried to run the full Playwright suite against it. That path is broken by design: jaffle-shop has no target/manifest.json checked in (it's emitted by dbt parse), so the /api/dbt/import step failed with "manifest.json not found" until we also install dbt-core, dbt-duckdb, run dbt deps + dbt parse, provide a profile, etc. — a multi-minute setup that's flaky on every link. The UX intent of PR is unchanged: users clone a real dbt repo locally and follow the Local folder / Git URL import flow. That's a user-side workflow, not a CI workflow. The backend contracts are already covered by the existing api-server unit tests, and the UI path is better caught by local Playwright runs while iterating. Keeping the Playwright scaffold (config + specs + global-setup) as local-dev tooling; updated e2e/README.md and CONTRIBUTING.md to reflect that CI does not run it and what the dev must do to parse the fixture before running locally. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.
Summary
Stacks on top of #59. Replaces the bundled jaffle-shop fixture (11 YAMLs shipped inside the web-app bundle) with a clone-from-GitHub flow: users clone
https://github.com/dbt-labs/jaffle-shopand walk the same Local folder or Git URL path as any other dbt repo. Adds Playwright E2E coverage, a CI workflow, and a full docs refresh.What changed
Removed
packages/web-app/src/fixtures/jaffle-shop/— all 11 YAML files + READMEImportDbtRepoDialog(default tab is now "git")Shell.jsxOnboarding text
"Paste a public git URL (e.g. https://github.com/dbt-labs/jaffle-shop) or pick a local folder.""Import your dbt repo (local folder or public git URL)""git-URL import flow"Playwright E2E scaffold
playwright.config.js— serial mode, chromium; webServer starts api-server on :3006 + Vite on :5173 withDM_ENABLE_DIRECT_APPLY=1e2e/global-setup.js— one-shotgit clone --depth 1 --branch main https://github.com/dbt-labs/jaffle-shoptotest-results/jaffle-shop/; respectsOFFLINE=1; re-uses cached clone on subsequent runse2e/import-api.spec.js— 2 backend contract tests forPOST /api/dbt/importe2e/critical-path.spec.js— always-on smoke (dismiss onboarding, import local folder, verify explorer + apply dialog); full loop (rename, autosave, auto-commit, DDL dry-run) gated behindE2E_FULL=1with selector TODOse2e/README.md— run instructionsCI
.github/workflows/e2e-tests.yml— two jobs: unit (web-app + api-server) and e2e (needs: unit). Installs core_engine viapip install -e, runsplaywright install --with-deps chromium, uploads report on failureDocs
docs/getting-started.mdScenario 1 → "Clone jaffle-shop"docs/tutorials/jaffle-shop-walkthrough.mdfull rewrite: two entry options, rename-cascade step, auto-commit, Apply-to-warehouse dry run, ⌘⇧E PNG exportCONTRIBUTING.mdfull rewrite: bootstrap, run modes, test matrix, CI overviewTest plan
npm testinpackages/web-app— 55 passing (unchanged)npm testinpackages/api-server— 59 passing (unchanged)npm run test:e2elocally with a real clone — smoke test passeshttps://github.com/dbt-labs/jaffle-shop→ import succeedsFollow-ups
After both PRs land, cut
v1.0.7release to PyPI (bumpspyproject.toml, datesCHANGELOG.mdunreleased section, tag push triggerspublish.yml).🤖 Generated with Claude Code