View raw

1 use Mojo::Base -strict; 2 3 use Test2::V0; 4 5 use FindBin; 6 use lib "${FindBin::Bin}/../lib/"; 7 use lib "${FindBin::Bin}/lib/"; 8 use Dashboard::Test qw(test_app); 9 10 my $t = test_app(); 11 12 $t->get_ok('/probes/ph') 13 ->status_is(200) 14 ->element_exists_not('#navbar-title') 15 ->element_exists( 16 'main section[data-controls-panel][aria-labelledby="probe-controls-title"]' 17 ) 18 ->text_is( '#probe-controls-title', 'pH chart controls' ) 19 ->element_exists('#probe-controls .graph-control') 20 ->text_is( '#probe-controls [data-control-group="range"]', 'Range' ) 21 ->text_is( '#probe-controls [data-control-group="timeframe"]', 22 'Timeframe' ) 23 ->text_is( '.card-header h2 a[href="/probes/ph"]', 'pH' ) 24 ->element_exists('.navbar-nav a.nav-link.active.dropdown-toggle') 25 ->element_exists('section#probe-ph[data-panel="ph"] canvas#chart-ph') 26 ->text_is( 'a[data-raw-download][data-probe="ph"]', 'Download data' ) 27 ->element_exists( 28 'button[data-timeframe="day"].timeframe-button.dropdown-item') 29 ->element_exists( 30 '.timeframe-control.dropdown > button[data-timeframe-dropdown-label]') 31 ->element_exists_not('.timeframe-control.btn-group') 32 ->element_exists( 33 'script[src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"]' 34 . '[integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"]' 35 ) 36 ->element_exists('tbody[data-reading-messages="ph"]') 37 ->element_exists_not('section#probe-do[data-panel="do"]'); 38 39 for my $timeframe (qw(hour day week month year)) { 40 $t->element_exists( 41 qq{.timeframe-control button[data-timeframe="$timeframe"]}); 42 } 43 44 $t->get_ok('/probes/unknown')->status_is(404); 45 $t->get_ok('/graphs/ph')->status_is(404); 46 47 $t->get_ok('/probes') 48 ->status_is(200) 49 ->element_exists( 50 'main section[data-controls-panel][aria-labelledby="probes-controls-title"]' 51 ) 52 ->text_is( '#probes-controls-title', 'Probe chart controls' ) 53 ->element_exists( 54 '#probes-controls .graph-control[data-default-timeframe="day"]') 55 ->element_exists('main.container') 56 ->element_exists('div.probes-grid') 57 ->element_exists('.navbar-nav a.nav-link.active.dropdown-toggle'); 58 59 for my $probe (qw(ph do orp ec)) { 60 $t->element_exists( 61 qq{div.probes-grid .card-header h2 a[href="/probes/$probe"]}); 62 $t->element_exists( 63 qq{section#probe-${probe}[data-panel="$probe"] canvas#chart-$probe}); 64 $t->element_exists(qq{a[data-raw-download][data-probe="$probe"]}); 65 } 66 67 done_testing; 68