Class: Plushie::Test::Case
- Inherits:
-
Minitest::Test
- Object
- Minitest::Test
- Plushie::Test::Case
- Includes:
- Helpers
- Defined in:
- lib/plushie/test/case.rb
Overview
Minitest test case base class for Plushie app testing.
Inherits from Minitest::Test. Includes all test helpers and manages session lifecycle automatically.
Class Attribute Summary collapse
-
.plushie_app_class ⇒ Class
readonly
The declared app class.
Class Method Summary collapse
-
.app(klass) ⇒ Object
Declare the app class for this test case.
Instance Method Summary collapse
-
#advance_frame(timestamp) ⇒ Object
included
from Helpers
Advance the renderer's animation clock to the given timestamp.
-
#assert_a11y(selector, expected) ⇒ Object
included
from Helpers
Assert that a widget's resolved a11y matches expected values.
-
#assert_exists(selector) ⇒ Object
included
from Helpers
Assert that a widget exists.
-
#assert_model(expected) ⇒ Object
included
from Helpers
Assert model equals expected value.
-
#assert_no_diagnostics ⇒ Object
included
from Helpers
Assert that no diagnostics have been emitted by the renderer.
-
#assert_not_exists(selector) ⇒ Object
included
from Helpers
Assert that a widget does NOT exist.
-
#assert_text(selector, expected) ⇒ Object
included
from Helpers
Assert that a widget contains the expected text.
-
#await_async(tag, timeout = 5000) ⇒ :ok
included
from Helpers
Wait for a tagged async task to complete.
-
#click(selector) ⇒ Object
included
from Helpers
Click a button widget.
-
#click_element(canvas_id, element_id) ⇒ Object
included
from Helpers
Click a canvas element by injecting a synthetic canvas_element_click event.
-
#find(selector) ⇒ Hash?
included
from Helpers
Find a widget by selector.
-
#find!(selector) ⇒ Hash
included
from Helpers
Find a widget by selector.
-
#find_by_label(label) ⇒ Hash?
included
from Helpers
Find a widget by accessibility label.
-
#find_by_role(role) ⇒ Hash?
included
from Helpers
Find a widget by accessibility role.
-
#find_focused ⇒ Hash?
included
from Helpers
Find the currently focused widget.
-
#focus_element(canvas_id, element_id) ⇒ Object
included
from Helpers
Focus a canvas element via scoped path.
-
#model ⇒ Object
included
from Helpers
Current app model.
-
#move_to(x, y) ⇒ Object
included
from Helpers
Move cursor to coordinates.
-
#plushie_start(app_class, **opts) ⇒ Object
included
from Helpers
Start a test session manually.
-
#plushie_stop ⇒ Object
included
from Helpers
Stop the current test session.
-
#press(key) ⇒ Object
included
from Helpers
Press a key (key down).
-
#register_effect_stub(kind, response) ⇒ Object
included
from Helpers
Register an effect stub with the renderer.
-
#release(key) ⇒ Object
included
from Helpers
Release a key (key up).
-
#reset ⇒ Object
included
from Helpers
Reset the session to initial state.
-
#resolved_a11y(selector) ⇒ Hash
included
from Helpers
Return the resolved a11y hash for a widget.
-
#save_screenshot(name, **opts) ⇒ Hash
included
from Helpers
Capture a screenshot and save as PNG to test/screenshots/.
-
#screenshot(name, **opts) ⇒ Hash
included
from Helpers
Capture a screenshot.
-
#select(selector, value) ⇒ Object
included
from Helpers
Select a value from pick_list, combo_box, or radio.
-
#session ⇒ Session
included
from Helpers
The current test session.
-
#setup ⇒ Object
Setup: start a test session with the declared app.
-
#skip_transitions ⇒ Object
included
from Helpers
Skip all active renderer-side transitions to completion.
-
#slide(selector, value) ⇒ Object
included
from Helpers
Slide a slider to a value.
-
#submit(selector) ⇒ Object
included
from Helpers
Submit a text_input (press Enter).
-
#teardown ⇒ Object
Teardown: assert no diagnostics, stop the session, and clean up.
-
#text(element) ⇒ String?
included
from Helpers
Extract text content from an element hash.
-
#toggle(selector) ⇒ Object
included
from Helpers
Toggle a checkbox or toggler.
-
#tree ⇒ Hash
included
from Helpers
Current tree from the renderer.
-
#tree_hash(name) ⇒ Hash
included
from Helpers
Capture a structural tree hash.
-
#type_key(key) ⇒ Object
included
from Helpers
Type a key (press + release).
-
#type_text(selector, text) ⇒ Object
included
from Helpers
Type text into a text_input or text_editor.
-
#unregister_effect_stub(kind) ⇒ Object
included
from Helpers
Remove a previously registered effect stub.
Class Attribute Details
.plushie_app_class ⇒ Class (readonly)
Returns the declared app class.
38 39 40 |
# File 'lib/plushie/test/case.rb', line 38 def plushie_app_class @plushie_app_class end |
Class Method Details
.app(klass) ⇒ Object
Declare the app class for this test case.
33 34 35 |
# File 'lib/plushie/test/case.rb', line 33 def app(klass) @plushie_app_class = klass end |
Instance Method Details
#advance_frame(timestamp) ⇒ Object Originally defined in module Helpers
Advance the renderer's animation clock to the given timestamp. Causes the renderer to evaluate all active animations at that point in time, potentially triggering transition_complete events.
#assert_a11y(selector, expected) ⇒ Object Originally defined in module Helpers
Assert that a widget's resolved a11y matches expected values. Reads through #resolved_a11y so inferred defaults compose with the author's explicit overrides.
#assert_exists(selector) ⇒ Object Originally defined in module Helpers
Assert that a widget exists.
#assert_model(expected) ⇒ Object Originally defined in module Helpers
Assert model equals expected value.
#assert_no_diagnostics ⇒ Object Originally defined in module Helpers
Assert that no diagnostics have been emitted by the renderer. Clears the diagnostic list after checking.
#assert_not_exists(selector) ⇒ Object Originally defined in module Helpers
Assert that a widget does NOT exist.
#assert_text(selector, expected) ⇒ Object Originally defined in module Helpers
Assert that a widget contains the expected text.
#await_async(tag, timeout = 5000) ⇒ :ok Originally defined in module Helpers
Wait for a tagged async task to complete. Async commands run synchronously on the mock backend, so this returns immediately after warning that there is nothing to wait for. Other test backends also currently complete async work before this method is needed, but do not warn.
#click(selector) ⇒ Object Originally defined in module Helpers
Click a button widget.
#click_element(canvas_id, element_id) ⇒ Object Originally defined in module Helpers
Click a canvas element by injecting a synthetic canvas_element_click event.
#find(selector) ⇒ Hash? Originally defined in module Helpers
Find a widget by selector. Returns the node hash or nil.
#find!(selector) ⇒ Hash Originally defined in module Helpers
Find a widget by selector. Raises if not found.
#find_by_label(label) ⇒ Hash? Originally defined in module Helpers
Find a widget by accessibility label.
#find_by_role(role) ⇒ Hash? Originally defined in module Helpers
Find a widget by accessibility role.
#find_focused ⇒ Hash? Originally defined in module Helpers
Find the currently focused widget.
#focus_element(canvas_id, element_id) ⇒ Object Originally defined in module Helpers
Focus a canvas element via scoped path. Use Command.focus("canvas/element") for the same effect.
#model ⇒ Object Originally defined in module Helpers
Returns current app model.
#move_to(x, y) ⇒ Object Originally defined in module Helpers
Move cursor to coordinates.
#plushie_start(app_class, **opts) ⇒ Object Originally defined in module Helpers
Start a test session manually.
#plushie_stop ⇒ Object Originally defined in module Helpers
Stop the current test session.
#press(key) ⇒ Object Originally defined in module Helpers
Press a key (key down).
#register_effect_stub(kind, response) ⇒ Object Originally defined in module Helpers
Register an effect stub with the renderer. The renderer will return the given response immediately for any effect of the given kind.
#release(key) ⇒ Object Originally defined in module Helpers
Release a key (key up).
#reset ⇒ Object Originally defined in module Helpers
Reset the session to initial state.
#resolved_a11y(selector) ⇒ Hash Originally defined in module Helpers
Return the resolved a11y hash for a widget.
Layers render-pipeline inference (placeholder -> description for
text-entry widgets, alt -> label for media widgets) on top of
the normalized a11y prop so tests see what assistive
technology will see. Normalizer-populated defaults (role,
implicit radio_group, required/validation projections, tooltip
described_by) are already carried on the tree.
#save_screenshot(name, **opts) ⇒ Hash Originally defined in module Helpers
Capture a screenshot and save as PNG to test/screenshots/.
#screenshot(name, **opts) ⇒ Hash Originally defined in module Helpers
Capture a screenshot.
#select(selector, value) ⇒ Object Originally defined in module Helpers
Select a value from pick_list, combo_box, or radio.
#setup ⇒ Object
Setup: start a test session with the declared app.
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/plushie/test/case.rb', line 42 def setup super app_class = self.class.plushie_app_class raise "No app declared. Add `app MyApp` to your test class." unless app_class pool = Plushie::Test.pool session_id = pool.register @_plushie_session = Session.new(app_class, pool: pool, session_id: session_id) Thread.current[:_plushie_test_session] = @_plushie_session end |
#skip_transitions ⇒ Object Originally defined in module Helpers
Skip all active renderer-side transitions to completion.
Advances the animation clock far enough to complete any reasonable animation. Triggers transition_complete events for any animations with on_complete tags.
#slide(selector, value) ⇒ Object Originally defined in module Helpers
Slide a slider to a value.
#submit(selector) ⇒ Object Originally defined in module Helpers
Submit a text_input (press Enter).
#teardown ⇒ Object
Teardown: assert no diagnostics, stop the session, and clean up.
54 55 56 57 58 59 |
# File 'lib/plushie/test/case.rb', line 54 def teardown assert_no_diagnostics if @_plushie_session @_plushie_session&.stop Thread.current[:_plushie_test_session] = nil super end |
#text(element) ⇒ String? Originally defined in module Helpers
Extract text content from an element hash.
#toggle(selector) ⇒ Object Originally defined in module Helpers
Toggle a checkbox or toggler.
#tree ⇒ Hash Originally defined in module Helpers
Returns current tree from the renderer.
#tree_hash(name) ⇒ Hash Originally defined in module Helpers
Capture a structural tree hash.
#type_key(key) ⇒ Object Originally defined in module Helpers
Type a key (press + release).
#type_text(selector, text) ⇒ Object Originally defined in module Helpers
Type text into a text_input or text_editor.
#unregister_effect_stub(kind) ⇒ Object Originally defined in module Helpers
Remove a previously registered effect stub.