Automatic tests#114
Open
ClementPasteau wants to merge 20 commits into
Open
Conversation
- GitHub Action on the automatic-tests branch: checks out GDevelop (automatic-tests branch), runs the static selector check, then plays every tutorial with Playwright against the editor dev server. - A video of each tutorial being played is uploaded as artifact (14 days), for passing and failing runs alike, along with traces and screenshots. - Known broken tutorials (flingGame, plinkoMultiplier) are played and recorded but expected to fail; the selector check skips them via --ignore. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Wait for menus/submenus to render when following the bold texts of a tooltip through a split menu button (2-players preview), and dismiss stray menus before retrying a preview launch. - Dispatch a direct click on the tooltip button when it never stabilizes (tooltip anchored to the bouncing avatar), with bounded timeouts. - Set a global actionTimeout so no action can ever block until the test timeout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The tooltip is anchored to the bouncing avatar and never stops moving, so a regular Playwright click (which waits for stability) intermittently times out, especially on slow CI machines. Wait for visibility, then click at the element's current coordinates. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The tutorial tooltip hides itself when an error boundary is displayed or when another dialog is stacked above the one hosting the highlighted element: include both in the failure message to diagnose CI-only failures. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sharpen failure diagnostics (dialog count, element presence, tooltip text) and dump each tooltip popper's computed visibility and buttons when a clickOnTooltipButton step cannot find its button, to diagnose the remaining CI-only tilemapPlatformer failure. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…enus When a modal dialog is open, Material UI sets aria-hidden on the other root containers including the tutorial tooltip popper: the visible button is then absent from the accessibility tree and getByRole cannot find it. Use a CSS + text locator instead. Also give submenus more time to render on slow CI machines. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A submenu closes 75ms after the pointer leaves its parent menu item (MaterialUIMenuImplementation): moving the mouse from the parent to a submenu item can close the submenu before the click lands on slow CI machines. Dispatch the click without any pointer movement instead, and use a CSS locator (menus can be aria-hidden when a dialog is open). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
When a click is intercepted by a dialog that does not contain the element the tutorial points to (e.g. an error alert opened above the object editor on CI), close it like a user would and log its content. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Convert Playwright's webm recordings to mp4 (H.264) on CI so they play natively on macOS (QuickTime/Quick Look). - Split the artifact: 'tutorial-videos' (small, videos + screenshots) and 'test-traces' (heavy, ~50MB per failed test, failures only). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ffmpeg is not preinstalled on current ubuntu-latest runner images. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ffmpeg reads stdin by default, swallowing the piped find output inside the while loop and corrupting the remaining file paths. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- joystick: mapProjectData referenced the undeclared key 'level' instead of 'gameScene' (it only worked through the orchestrator's fallback to the first scene). - plinkoMultiplier's #project-manager-drawer-close selectors are actually valid: DrawerTopBar builds its close button id from its own id. Teach the checker this pattern; only flingGame remains ignored. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Log in with the dev test account through the tutorial's own flow: when an absenceOfElement step targets an existing element (e.g. #login-now), click it and complete the login dialog that opens. - Follow 'Right click ... and select **X**' tooltips: open the context menu and click the bold menu items. - Drop as many instances as instancesCount requires, at spread positions. - Verify filled values stick and retype like a user when the editor resets an uncontrolled input (variables list). - Dismiss unexpected dialogs whenever a step fails to advance (the dev leaderboard-creation 404 dialog is expected: template leaderboards only exist in production). - plinkoMultiplier is no longer expected to fail; only flingGame remains. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Three Playwright projects matching the editor's responsive thresholds: desktop (1600x900), tablet (1024x768), mobile (844x390 landscape). - CI runs them as parallel matrix jobs, each uploading its own tutorial-videos-<project> and test-traces-<project> artifacts. - Mobile player adaptations, mirroring real user behavior: select then drag with the drop in the visible canvas area, reopen the objects drawer when the object is hidden, and search a virtualized list for the expected item using the tooltip's bold text. - tilemapPlatformer is marked known broken on mobile: at the tile painting step the properties drawer closes and the tutorial leaves the user without any guidance. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Check out GDevelop master (the orchestrator test-mode hook is being merged there) and run on pushes to main plus an hourly schedule, which catches editor changes breaking tutorials. - Shorter artifact retention for scheduled runs (3 days vs 14). - Ping Discord on failure when the TUTORIALS_CI_DISCORD_WEBHOOK secret is set. - flingGame is fully skipped instead of expected-to-fail: there is no plan to fix it. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
On pull requests, diff against the base branch and play only the tutorials whose json changed — all of them when the test harness itself changed, none when the changes concern neither. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
A new push cancels the still-running workflow of the same pull request or branch. The push trigger now only covers main: pull requests are covered by the pull_request event (the automatic-tests entry caused duplicate runs once the PR was opened). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Harness changes take precedence over the modified-tutorials filter: a PR changing both e2e code and a tutorial was only playing that tutorial. Co-Authored-By: Claude Fable 5 <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.
No description provided.