Skip to content

Add UI Testing Playground coverage - #3

Merged
michaustriaqa merged 11 commits into
masterfrom
claude/ui-testing-playground
Aug 17, 2026
Merged

michaustriaqa merged 11 commits into
masterfrom
claude/ui-testing-playground

Conversation

@michaustriaqa

Copy link
Copy Markdown
Owner

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.
  • New playground-tests CI 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 correctly
  • robocop check / robocop format --check — clean
  • CI run on this PR against the live site

Generated by Claude Code

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.
@michaustriaqa
michaustriaqa merged commit 2bf0c37 into master Aug 17, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant