Environment: Linux 6.1, Node v22.21.1, npm v10.9.4.
Note: The requested evaluation rubric includes “advance understanding of MCP servers”, but this workshop is about Playwright E2E testing (not MCP). I treated that dimension as “does this step meaningfully advance the stated Playwright testing skill.”
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- The instructions/screenshot imply asserting a heading related to “Epic Web”, but the current Epic Web homepage has multiple headings containing “Epic Web”, which triggers Playwright strict-mode violations if you use a partial accessible name (e.g.
name: 'Epic Web'). The official solution uses the specific accessible nameFull Stack Workshop Training for Professional Web Developers.
- The instructions/screenshot imply asserting a heading related to “Epic Web”, but the current Epic Web homepage has multiple headings containing “Epic Web”, which triggers Playwright strict-mode violations if you use a partial accessible name (e.g.
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- Running
npm testin a freshplayground/required additional setup that isn’t mentioned in the step instructions:npm run post:playground(to runprisma generate --sql, otherwise the dev server fails with missing.prisma/client/sql/index.mjs).- Installing the correct Playwright browsers for the
playground’s Playwright version (otherwise Playwright errors that the Chromium executable doesn’t exist and asks to runnpx playwright install).
- Running
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- If you try to follow the “run
npm test” instruction from a freshplayground/, you still need the same extra setup from the prior step (Prisma generate + Playwright browser install) before the app/tests can run.
- If you try to follow the “run
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness: no notes.
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- The step instructs installing
playwright-persona, but it’s already present indevDependenciesfor this exercise’splaygroundapp, which can be confusing when following along literally.
- The step instructs installing
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- The step instructs installing
mswand@msw/playwright, but they’re already present indevDependenciesfor this exercise’splaygroundapp (at least in this repo snapshot), which makes the first instruction redundant/confusing.
- The step instructs installing
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- In the inline comments for
tests/e2e/notes-list.test.ts, the instructions refer to adataproperty when callingcreateNotes, but the utility is specified/typed to acceptnotes(and the official solution usesnotes). This is small but can cause a brief “which key is correct?” speed bump.
- In the inline comments for
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- The core workflow depends on interactive VS Code UI (Playwright extension, “Show browser”, “Record at cursor”). In a non-GUI / remote / CI-style environment, that workflow can’t be followed literally, even though the underlying exercise can still be completed by writing the equivalent actions manually.
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness: no notes.
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness: no notes.
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- The recommended workflow is to run Playwright in UI mode (
--ui) and step through the test. That’s great locally, but it’s not directly runnable in a headless/remote environment without a GUI. The underlying bug fix itself is straightforward once you know what to look for (a mismatched accessible name expectation).
- The recommended workflow is to run Playwright in UI mode (
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- The exercise references a
trace.zipin the app root, but no such file is present in this repository snapshot (neither inplayground/nor in the exercise directory), so the “open the trace viewer” command can’t be followed as written. - The instructions say the test “fails on CI but works locally”, but in this environment the provided
notes-createtest also failed locally with the same timeout (click intercepted by adialog-overlay), which undermines the intended debugging contrast.
- The exercise references a
- Learning outcomes: no notes.
- Instructional clarity: no notes.
- Cognitive load and pacing: no notes.
- Examples and exercise alignment: no notes.
- Mechanical correctness:
- Like the “recording” exercise, the primary workflow depends on VS Code Playwright extension UI (adding breakpoints, running in “Show browser” mode), which is not feasible in headless/remote environments.
- The exercise frames
logout.test.tsas failing (and it does fail in this environment), but there’s no corresponding “solution” code change for learners to diff against. That makes it hard to validate understanding beyond “I can reproduce the failure.”