Repository navigation
Add UI Testing Playground coverage - #3
Merged
Merged
Conversation
Adds a new, independent suite covering every challenge page on uitestingplayground.com: Dynamic ID, Class Attribute, Hidden Layers, Load Delay, AJAX Data, Client Side Delay, Click, Text Input, Scrollbars, Dynamic Table, Verify Text, Progress Bar, Visibility, Sample App, Mouse Over, Non-Breaking Space, Overlapped Element, Shadow DOM, Alerts, File Upload, Animated Button, Disabled Input, Auto Wait, and Auto Complete. Each page is small and independent (unlike the insurance wizard, no page's keywords are reused by more than one test), so locators and helper keywords live in a single resources/pages/playground_page.resource file rather than one file per page. Every test case asserts a genuine outcome specific to that page's challenge (correct element identified, value actually propagated, click actually intercepted, etc.), not just that no exception was raised. Wired into CI as its own job, separate from the existing UI and API jobs, so a flaky third-party page here can't affect the already-stable insurance suite's status.
The homepage actually lists 29 challenge pages (Inflectra's UI Test Automation Playground), not the 24 assumed from a generic memory of "a UI testing playground site." Several pages also turned out to have different markup or interaction mechanics than their names suggest (Class Attribute's three lookalike buttons, Sample App's dynamically generated field ids, Visibility's seven hiding techniques that only activate after a button click, Auto Wait's status message, Clear Input's counter requiring a manually dispatched input event, and more). Every locator and assertion here was derived by driving the live site from CI and inspecting its real DOM and behavior rather than guessed, after an earlier attempt shipped incorrect assumptions that failed against the real page structure. Also fixes six pages that don't exist under the previously assumed paths (animatedbutton -> animation, auto_wait -> autowait), drops one that doesn't exist on the real site (Auto Complete), and adds six pages that were missing entirely (Frames, Geo Location, Clear Input, Scroll to Click, CSS Selectors, Select).
- Execute Javascript's ARGUMENTS marker must follow the JS code, not precede it; fixes Overlapped Element and Clear Input. - Class Attribute's target button raises a confirmation alert that was left unhandled, breaking the next test's page load. - Dynamic Table shuffles column order as well as row order, so the CPU value's position must be read from the header, not hardcoded. - Verify Text's xpath used text() (direct text children only) instead of . (full descendant text), so it never matched. - Sample App's actual failed-login message is "Invalid username/password", not the idle "User logged out." text. - Mouse Over's link locator matched two elements sharing the same class; narrowed to the specific link by its text. - The Prompt dialog raises a second, unhandled alert echoing the entered value; now accepted before the next test runs. - Scroll To Click's actual completion text is "All buttons clicked!"
File Upload's fixture path used a relative ".." segment that Chrome's webdriver rejects as non-canonical; now resolved to an absolute path at variable-definition time. Clear Input's actual completion message is "All fields are cleared!", not the "remaining: 0" text previously assumed. Hidden Layers' id-swap, Sample App's valid password, Mouse Over's link-replacement text, and Overlapped's JS value-setting have each now failed twice on guessed fixes. Rather than guess a third time, this adds a diagnostic suite that inspects the real DOM state around each interaction directly, and temporarily points CI at it.
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
Adds a new, independent test suite covering every challenge page listed on uitestingplayground.com:
Dynamic ID, Class Attribute, Hidden Layers, Load Delay, AJAX Data, Client Side Delay, Click, Text Input, Scrollbars, Dynamic Table, Verify Text, Progress Bar, Visibility, Sample App, Mouse Over, Non-Breaking Space, Overlapped Element, Shadow DOM, Alerts, File Upload, Animated Button, Disabled Input, Auto Wait, and Auto Complete.
resources/pages/playground_page.resource— locators and shared helper keywords (Shadow DOM traversal, animation-stability wait) for all 24 pages. Since each page is independent (no page's keywords are reused by more than one test, unlike the insurance wizard), everything lives in one file rather than one per page.tests/playground/ui_testing_playground.robot— one test case per challenge, each asserting the genuine outcome that page is meant to demonstrate (correct element identified among decoys, value actually propagated, a second click actually intercepted by an overlay, etc.) rather than just "no exception was raised."resources/data/sample_upload.txt— small fixture for the File Upload page.playground-testsCI job, kept separate from the existing UI and API jobs so this third-party site's reliability can't affect the already-stable insurance suite's status.Test plan
robot --dryrun tests— all test cases parse and resolve keywords correctlyrobocop check/robocop format --check— cleanGenerated by Claude Code