Repository navigation
Conversation
Move the image coding fixtures into the shared automation media folder (tests/resources/media_files) under generic names (image-test-01.png, table-test-01.csv), so other specs can reuse them, and point the Playwright support asset controller at that folder. Allow video-test-01.mp4 through /test/support so browser specs can use a real video without depending on the media library or object storage.
Add a @pr-tagged suite covering Phase 1 Simple Author workflows: - Parameterized component cases (static text, image, video, multiple choice, multi-select, hub and spoke) that author each component on its own screen and verify the configuration survives a save and refresh. - Copy/paste and undo/redo, with targeted checks for the MER-3420, MER-4109 and MER-4572 paste regressions. - An authored and published lesson covering screen settings, scoring overview, flowchart validation and path wiring, and the MER-3919 slider decimal feedback regression. - Student delivery of that lesson: responsive layout at desktop and phone widths, video loading, check-button feedback, and navigation. Add SimpleAuthorPO and SimpleAuthorTask (exposed through the fixture). The page object waits for the editor's debounced writes before moving on, since quick successive edits can otherwise persist stale state. Data is seeded through a scenario and torn down with the guarded automation teardown when an API key is available. Shared helpers now wait for the read-only toggle to be enabled before reading it and accept an optional lesson title when creating a Simple Author page.
StudentCoursePO.openPage and openFirstPage confirmed the opened page by a heading with the page title. MER-5944 (#6874) changed the adaptive lesson header title from an h1 to plain text with a screen-reader "Title:" prefix, so the check failed for every adaptive lesson and broke the student tests in adaptive-authoring.spec.ts. Accept either the heading (basic pages) or the adaptive header title.
- Open the student lesson through StudentCoursePO.openPage from Learn instead of a direct adaptive_lesson URL, dropping the lesson slug shared between the delivery tests. - Add AdaptiveDeckPO.footerButton() and use it instead of a spec-local footer locator. - Make SimpleAuthorPO internals private and drop unused type values. - Describe regression checks by behavior in spec comments. - Document in the fixtures readme how media_files are served through /test/support and how to allow a new fixture.
Cut the suite from about 585s to about 375s locally, measured over two consecutive runs each: - Share one signed-in page with the editor open across the component cases (serial describe), so each case skips a login and an editor load. Every case still reloads the editor to verify persistence. - Stop waiting for the onboarding wizard on every editor load. Extract BasicPracticePagePO.disableAdaptiveReadOnly() and use it once the editor header has rendered. - Shorten the waitForSaves quiet window from 1.5s to 800ms, still longer than the editor's 500ms save debounce. - Retry the "Add new screen" dialog only when no screen-creation request went out, instead of waiting 20s for a screen that will never appear. - Drop the now-unused openLesson/openEditor helpers.
Replace the non-null assertions on the added and pasted part ids with explicit guards, so TypeScript narrows them and a missing part fails with a clear message.
Contributor
Contributor
AI Review — performanceNo issues found |
Contributor
AI Review — securityNo issues found |
Contributor
AI Review — elixirNo issues found |
Contributor
AI Review — typescriptRetry can add the component twicefile: assets/automation/src/systems/torus/pom/page/SimpleAuthorPO.ts |
The job built only the webpack JS bundles. Tailwind CSS is built by Mix (priv/static/css/app.css), and with watchers disabled for ci_e2e nothing generated it, so every page in the job rendered unstyled. Tests that rely on real layout, such as hidden responsive markup or side-by-side positioning, could not pass there. Build the CSS once, upfront, alongside the JS bundles.
Adaptive lesson rules are evaluated server-side by Node.js from priv/node/rules.js and eval.js, which the production Dockerfile builds with deploy-node. The PR job never built them, so every adaptive check failed with "Cannot find module 'rules'" and a 500 response.
Confirm the corrected option is selected before the footer control is used again, and explain that with the feedback still open that control re-checks the current answer, so acknowledging the feedback first would submit the wrong answer once more.
Spec files are distributed across two workers while tests within a file stay serial, since playwright.config.ts keeps fullyParallel off. Specs already isolate their data per process and run, so they can share the ephemeral Torus instance.
Spec files are distributed across three workers while tests within a file stay serial, since playwright.config.ts keeps fullyParallel off. Specs already isolate their data per process and run, so they can share the ephemeral Torus instance. The total time is bounded by the longest spec file instead of the sum of all of them.
Three workers were slower than two on the 4-vCPU runner and made the credential login test flaky in two of three runs, since three browsers, Torus, and Postgres competed for CPU. Two workers cut the test step from about 8 minutes to under 6.
This branch was successfully deployed
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.
Adds a Playwright suite for the highest-value Simple Author (adaptive flowchart) workflows, tagged
@prso it runs in the PR Playwright Suite.npm run test-simple-author(setPLAYWRIGHT_BASE_URLandPLAYWRIGHT_SCENARIO_TOKEN; withPLAYWRIGHT_AUTOMATION_API_KEYset, seeded data is torn down afterwards)Verifies:
Supporting changes:
tests/resources/media_fileswith generic names, and/test/supportcan servevideo-test-01.mp4, so browser specs can use a real video without the media library or object storage.adaptive-authoring.spec.ts.StudentCoursePOnow accepts either form..github/workflows/pr-playwright.yml), which this suite is the first@prtest to need: the job only built the webpack JS bundles, so pages were served without the Tailwind CSS (built by Mix intopriv/static/css/app.css) and every adaptive "Check" failed with a 500 because the server-side rule bundles (priv/node/rules.jsandeval.js, built byyarn run deploy-nodeas in the Dockerfile) were missing. The job now builds both upfront, adding about 40s, and runs@prspec files on two workers, which cut the test step from about 8 to under 6 minutes (three workers were slower and made the credential login test flaky).Suite details, CI placement, and the editor behaviors the page object handles are documented in

assets/automation/tests/torus/course_authoring/simple_author.md.See: https://eliterate.atlassian.net/browse/MER-5988