#!perl use Test::More; use Test::Mojo; use FindBin; require "$FindBin::Bin/Test/MyApp.pm"; use Test::Mojo::WithRoles 'ElementCounter'; my $t = Test::Mojo::WithRoles->new; { $t->get_ok('/')->status_is(200) ->element_count_is('#one', 1) ->element_count_is('div', 4) ->element_count_is('span', 2); $t->dive_in('#one ') ->element_count_is('div', 0) ->element_count_is('span', 1) ->dived_text_is('span', 'Mooo'); $t->dive_reset ->element_count_is('#one', 1) ->element_count_is('div', 4) ->element_count_is('span', 2) ->element_count_is('div', '> 2') ->element_count_is('span', '< 4') ->element_count_is('span', '> 1'); $t->dive_in('#two #three ') ->element_count_is('#one', 0) ->element_count_is('#three', 0) ->element_count_is('div', 1) ->element_count_is('span', 1) ->element_count_is('div', '< 2') ->element_count_is('span', '< 4') ->element_count_is('span', '> 0') ->dived_text_is('span', 'Hello!'); $t->dive_up ->element_count_is('#one', 0) ->element_count_is('#three', 1) ->element_count_is('div', 2) ->element_count_is('span', 1) ->element_count_is('div', '< 3') ->element_count_is('span', '< 4') ->element_count_is('span', '> 0') ->dived_text_is('#four span', 'Hello!'); $t->dive_in('#three ') ->dive_out('#three ') ->element_count_is('#one', 0) ->element_count_is('#three', 1) ->element_count_is('div', 2) ->element_count_is('span', 1) ->element_count_is('div', '< 3') ->element_count_is('span', '< 4') ->element_count_is('span', '> 0') ->dived_text_is('#four span', 'Hello!'); $t->dive_in('#three ') ->dive_out(qr/.+/) ->element_count_is('#one', 1) ->element_count_is('div', 4) ->element_count_is('span', 2); $t->dive_reset->dive_in('#two ') ->element_count_is('div, span', 3); isnt eval { $t->element_count_is('div'); 42 }, 42, 'we die when element count is undefined'; like $@, qr/undefined element count/, 'message on death looks sane'; } done_testing();