Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package openQA for openSUSE:Factory checked in at 2025-03-10 18:05:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.19136 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Mon Mar 10 18:05:07 2025 rev:681 rq:1251567 version:5.1741427870.33ddb978 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2025-03-08 17:59:57.441272201 +0100 +++ /work/SRC/openSUSE:Factory/.openQA.new.19136/openQA.changes 2025-03-10 18:05:24.878782551 +0100 @@ -1,0 +2,9 @@ +Sun Mar 09 19:12:30 UTC 2025 - ok...@suse.com + +- Update to version 5.1741427870.33ddb978: + * Use of Feature::Compat::Try in the test libraries + * Fix sporadic test failure in `t/ui/10-tests_overview.t` + * Simplify test for filtering on test results overview + * t: Use implicit Test::Exception functions for the test + +------------------------------------------------------------------- Old: ---- openQA-5.1741336382.92b047c6.obscpio New: ---- openQA-5.1741427870.33ddb978.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.hWQh6w/_old 2025-03-10 18:05:26.866864905 +0100 +++ /var/tmp/diff_new_pack.hWQh6w/_new 2025-03-10 18:05:26.870865071 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1741336382.92b047c6 +Version: 5.1741427870.33ddb978 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.hWQh6w/_old 2025-03-10 18:05:26.910866728 +0100 +++ /var/tmp/diff_new_pack.hWQh6w/_new 2025-03-10 18:05:26.914866894 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1741336382.92b047c6 +Version: 5.1741427870.33ddb978 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.hWQh6w/_old 2025-03-10 18:05:26.938867888 +0100 +++ /var/tmp/diff_new_pack.hWQh6w/_new 2025-03-10 18:05:26.938867888 +0100 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1741336382.92b047c6 +Version: 5.1741427870.33ddb978 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.hWQh6w/_old 2025-03-10 18:05:26.966869048 +0100 +++ /var/tmp/diff_new_pack.hWQh6w/_new 2025-03-10 18:05:26.966869048 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1741336382.92b047c6 +Version: 5.1741427870.33ddb978 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.hWQh6w/_old 2025-03-10 18:05:26.994870208 +0100 +++ /var/tmp/diff_new_pack.hWQh6w/_new 2025-03-10 18:05:26.998870373 +0100 @@ -90,7 +90,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1741336382.92b047c6 +Version: 5.1741427870.33ddb978 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-5.1741336382.92b047c6.obscpio -> openQA-5.1741427870.33ddb978.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/15-assets.t new/openQA-5.1741427870.33ddb978/t/15-assets.t --- old/openQA-5.1741336382.92b047c6/t/15-assets.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/15-assets.t 2025-03-08 10:57:50.000000000 +0100 @@ -111,8 +111,7 @@ throws_ok { $w = $c->_register($schema, 'host', '1', $workercaps) } qr/Incompatible websocket API version/, 'Worker different version - incompatible version exception'; $workercaps->{websocket_api_version} = WEBSOCKET_API_VERSION; -eval { $w = $c->_register($schema, 'host', '1', $workercaps); }; -ok(!$@, 'Worker correct version'); +lives_ok { $w = $c->_register($schema, 'host', '1', $workercaps) } 'Worker correct version'; my $worker = $schema->resultset('Workers')->find($w); is($worker->websocket_api_version(), WEBSOCKET_API_VERSION, 'Worker version set correctly'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/16-utils-job-templates.t new/openQA-5.1741427870.33ddb978/t/16-utils-job-templates.t --- old/openQA-5.1741336382.92b047c6/t/16-utils-job-templates.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/16-utils-job-templates.t 2025-03-08 10:57:50.000000000 +0100 @@ -60,18 +60,14 @@ like($errors->[0], qr{/: Properties not allowed: invalid.}, 'Invalid toplevel key error message'); subtest load_yaml => sub { - eval { load_yaml(file => $template_openqa_dupkey) }; - my $err = $@; - like($err, qr{Duplicate key 'foo'}, 'Duplicate key detected'); + throws_ok { load_yaml(file => $template_openqa_dupkey) } qr{Duplicate key 'foo'}, 'Duplicate key detected'; my $cyclic = <<"EOM"; - &ALIAS foo: *ALIAS EOM - eval { my $data = load_yaml(string => $cyclic) }; - $err = $@; - like $err, qr{Found cyclic ref}, "cyclic refs are fatal"; + throws_ok { my $data = load_yaml(string => $cyclic) } qr{Found cyclic ref}, "cyclic refs are fatal"; }; done_testing; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/28-logging.t new/openQA-5.1741427870.33ddb978/t/28-logging.t --- old/openQA-5.1741336382.92b047c6/t/28-logging.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/28-logging.t 2025-03-08 10:57:50.000000000 +0100 @@ -127,15 +127,10 @@ setup_log($app); OpenQA::App->set_singleton(undef); # To make sure we are not setting it in other tests my $output = stderr_from { - eval { log_fatal('fatal message') } + throws_ok { log_fatal('fatal message') } + qr/fatal message.*t\/28-logging\.t/, 'Fatal raised exception'; }; - my $eval_error = $@; - my $exception_raised = 0; - $exception_raised++ if $eval_error; - is($exception_raised, 1, 'Fatal raised exception'); - like($output, qr/\[FATAL\] fatal message/, 'OK fatal'); - like($eval_error, qr{fatal message.*t/28-logging.t}); - + like $output, qr/\[FATAL\] fatal message/, 'OK fatal'; }; subtest 'Checking log level' => sub { @@ -168,7 +163,7 @@ log_warning('warn message'); log_error('error message'); - eval { log_fatal('fatal message'); }; + throws_ok { log_fatal('fatal message') } qr/fatal message/, 'exception raised'; $deathcounter++ if $@; @@ -185,7 +180,7 @@ log_warning("warn message", channels => $channel); log_error("error message", channels => $channel); - eval { log_fatal('fatal message', channels => $channel); }; + throws_ok { log_fatal('fatal message', channels => $channel); } qr/fatal message/, 'exception raised'; $deathcounter++ if $@; %matches = map { $_ => 1 } (Mojo::File->new($logging_test_file)->slurp =~ m/$reChannel/gm); @@ -201,7 +196,7 @@ log_warning("warn message", channels => 'no_channel'); log_error("error", channels => 'no_channel'); - eval { log_fatal('fatal message', channels => 'no_channel'); }; + throws_ok { log_fatal('fatal message', channels => 'no_channel') } qr/fatal message/, 'exception raised'; $deathcounter++ if $@; @@ -302,7 +297,8 @@ log_warning("warn message", channels => $channel_tupple, standard => 1); log_error("error message", channels => $channel_tupple, standard => 1); - eval { log_fatal('fatal message', channels => $channel_tupple, standard => 1); }; + throws_ok { log_fatal('fatal message', channels => $channel_tupple, standard => 1) } qr/fatal message/, + 'exception raised'; my %matches = map { $_ => 1 } (Mojo::File->new($logging_test_file1)->slurp =~ m/$reChannel/gm); is(keys(%matches), $counterChannel, "Worker multiple channel $channel_tupple->[0] log level $level entry"); @@ -350,7 +346,8 @@ log_warning("warn message", channels => ['test', 'test1']); log_error("error message", channels => ['test', 'test1']); - eval { log_fatal('fatal message', channels => ['test', 'test1']); }; + throws_ok { log_fatal('fatal message', channels => ['test', 'test1']) } qr/fatal message/, + 'exception raised'; my %matches = map { $_ => 1 } (Mojo::File->new($logging_test_file1)->slurp =~ m/$reChannel/gm); is(keys(%matches), 0, "Worker multiple channel $channel_tupple->[0] log level $level entry"); @@ -400,7 +397,7 @@ log_warning("warn message"); log_error("error message"); - eval { log_fatal('fatal message'); }; + throws_ok { log_fatal('fatal message') } qr/fatal message/, 'exception raised'; my %matches = map { $_ => 1 } (Mojo::File->new($logging_test_file1)->slurp =~ m/$reChannel/gm); is(keys(%matches), $counterChannel, "Worker default channel 1 log level $level entry"); @@ -424,7 +421,7 @@ log_warning("warn message"); log_error("error message"); - eval { log_fatal('fatal message'); }; + throws_ok { log_fatal('fatal message') } qr/fatal message/, 'exception raised'; %matches = map { $_ => 1 } (Mojo::File->new($logging_test_file1)->slurp =~ m/$reChannel/gm); is(keys(%matches), $counterChannel, "Worker default channel 1 log level $level entry"); @@ -446,7 +443,7 @@ log_warning("warn message"); log_error("error message"); - eval { log_fatal('fatal message'); }; + throws_ok { log_fatal('fatal message') } qr/fatal message/, 'exception raised'; %matches = map { $_ => 1 } (Mojo::File->new($logging_test_file1)->slurp =~ m/$reChannel/gm); is(keys(%matches), 0, "Worker default channel 1 log level $level entry"); @@ -468,7 +465,7 @@ log_warning("warn message"); log_error("error message"); - eval { log_fatal('fatal message'); }; + throws_ok { log_fatal('fatal message') } qr/fatal message/, 'exception raised'; %matches = map { $_ => 1 } (Mojo::File->new($logging_test_file1)->slurp =~ m/$reChannel/gm); is(keys(%matches), 0, "Worker default channel 1 log level $level entry"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/30-test_parser.t new/openQA-5.1741427870.33ddb978/t/30-test_parser.t --- old/openQA-5.1741336382.92b047c6/t/30-test_parser.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/30-test_parser.t 2025-03-08 10:57:50.000000000 +0100 @@ -613,10 +613,7 @@ my $parser = OpenQA::Parser::Format::TAP->new; - eval { $parser->load($tap_test_file) }; - my $error = $@; - - like $error, qr{A valid TAP starts with filename.tap}, "Invalid TAP example"; + throws_ok { $parser->load($tap_test_file) } qr{A valid TAP starts with filename.tap}, "Invalid TAP example"; }; sub test_ltp_file { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/31-client_archive.t new/openQA-5.1741427870.33ddb978/t/31-client_archive.t --- old/openQA-5.1741336382.92b047c6/t/31-client_archive.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/31-client_archive.t 2025-03-08 10:57:50.000000000 +0100 @@ -27,7 +27,7 @@ is(-s "$limittest_path/limittest.tar.bz2", 2 * 1024 * 1024, 'limit test file is created') or note "dd output: $dd_output"; - eval { + lives_ok { my %options = ( archive => $destination, url => "/api/v1/jobs/$jobid/details", @@ -35,8 +35,8 @@ 'with-thumbnails' => 1 ); my $command = $t->ua->archive->run(\%options); - }; - is($@, '', 'Archive functionality works as expected would perform correctly') or always_explain $@; + } + 'Archive functionality works as expected would perform correctly'; my $file = $destination->child('testresults', 'details-zypper_up.json'); ok(-e $file, 'details-zypper_up.json file exists') or diag $file; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/32-openqa_client.t new/openQA-5.1741427870.33ddb978/t/32-openqa_client.t --- old/openQA-5.1741336382.92b047c6/t/32-openqa_client.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/32-openqa_client.t 2025-03-08 10:57:50.000000000 +0100 @@ -43,8 +43,10 @@ my $chunkdir = 't/data/openqa/share/factory/tmp/public/hdd_image2.qcow2.CHUNKS/'; my $rp = "t/data/openqa/share/factory/hdd/hdd_image2.qcow2"; - eval { $t->ua->upload->asset(99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image2.qcow2'}); }; - ok !$@, 'No upload errors' or die explain $@; + lives_ok { + $t->ua->upload->asset(99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image2.qcow2'}) + } + 'No upload errors'; path($chunkdir)->remove_tree; ok !-d $chunkdir, 'Chunk directory should not exist anymore'; ok -e $rp, 'Asset exists after upload'; @@ -57,11 +59,11 @@ my $chunkdir = 't/data/openqa/share/factory/tmp/public/hdd_image5.qcow2.CHUNKS/'; my $rp = "t/data/openqa/share/factory/hdd/hdd_image5.qcow2"; - eval { + lives_ok { $t->ua->upload->asset( 99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image5.qcow2', local => 1}); - }; - ok !$@, 'No upload errors' or die explain $@; + } + 'No upload errors'; path($chunkdir)->remove_tree; ok !-d $chunkdir, 'Chunk directory should not exist anymore'; ok -e $rp, 'Asset exists after upload'; @@ -77,11 +79,11 @@ my ($local_prepare, $chunk_prepare); my $local_prepare_cb = $t->ua->upload->on('upload_local.prepare' => sub { $local_prepare++ }); my $chunk_prepare_cb = $t->ua->upload->on('upload_chunk.prepare' => sub { $chunk_prepare++ }); - eval { + lives_ok { $t->ua->upload->asset( 99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image3.qcow2', asset => 'private'}); - }; - ok !$@, 'No upload errors' or die explain $@; + } + 'No upload errors' or die explain $@; $t->ua->upload->unsubscribe('upload_local.prepare' => $local_prepare_cb); $t->ua->upload->unsubscribe('upload_chunl.prepare' => $chunk_prepare_cb); ok !$local_prepare, 'not uploaded via file copy'; @@ -101,7 +103,7 @@ my ($local_prepare, $chunk_prepare); my $local_prepare_cb = $t->ua->upload->on('upload_local.prepare' => sub { $local_prepare++ }); my $chunk_prepare_cb = $t->ua->upload->on('upload_chunk.prepare' => sub { $chunk_prepare++ }); - eval { + lives_ok { $t->ua->upload->asset( 99963 => { chunk_size => $chunk_size, @@ -110,8 +112,8 @@ asset => 'private', local => 1 }); - }; - ok !$@, 'No upload errors' or die explain $@; + } + 'No upload errors'; $t->ua->upload->unsubscribe('upload_local.prepare' => $local_prepare_cb); $t->ua->upload->unsubscribe('upload_chunl.prepare' => $chunk_prepare_cb); ok $local_prepare, 'uploaded via file copy'; @@ -133,11 +135,11 @@ ok(-d $chunkdir, 'Chunk directory exists'); }); - eval { + lives_ok { $t->ua->upload->asset( 99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image3.xml', asset => 'other'}); - }; - ok !$@, 'No upload errors' or die explain $@; + } + 'No upload errors'; ok !-d $chunkdir, 'Chunk directory should not exist anymore'; ok -e $rp, 'Asset exists after upload'; is $sum, OpenQA::File->file_digest($rp), 'checksum matches for other asset'; @@ -160,11 +162,11 @@ $t->ua->upload->on('upload_chunk.response' => sub { $responses++; }); $t->ua->upload->on('upload_chunk.request_fail' => sub { use Data::Dump 'pp'; diag pp(@_) }); - eval { + lives_ok { $t->ua->upload->asset( 99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image4.xml', asset => 'other'}); - }; - ok !$@, 'No upload errors'; + } + 'No upload errors'; is $fail_chunk, 1, 'One chunk failed uploading, but we recovered' or always_explain "\$fail_chunk: $fail_chunk"; is $responses, OpenQA::File::_chunk_size(-s $filename, $chunk_size) + 1, 'responses as expected'; ok !-d $chunkdir, 'Chunk directory should not exist anymore'; @@ -191,11 +193,11 @@ is(pop()->res->json->{status}, 'foobar', 'Error message status is correct'); }); - eval { + lives_ok { $t->ua->upload->asset(99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image5.xml', asset => 'other', retries => 7}); - }; - ok !$@, 'No function errors on upload failures' or die diag $@; + } + 'No function errors on upload failures' or BAIL_OUT "$@"; is $fail_chunk, 7, 'All attempts failed, no recovery on upload failures'; is $errored, 1, 'Upload errors'; ok !-d $chunkdir, 'Chunk directory should not exist anymore'; @@ -216,11 +218,11 @@ $t->ua->upload->on('upload_chunk.response' => sub { die("Subdly") }); $t->ua->upload->on('upload_chunk.request_err' => sub { $fail_chunk++; $e = pop(); }); - eval { + lives_ok { $t->ua->upload->asset( 99963 => {chunk_size => $chunk_size, file => $filename, name => 'hdd_image6.xml', asset => 'other'}); - }; - ok !$@, 'No function errors on internal errors' or die diag $@; + } + 'No function errors on internal errors' or BAIL_OUT "$@"; is $fail_chunk, 10, 'All chunks failed, no recovery on internal errors'; like $e, qr/Subdly/, 'Internal error seen'; ok !-d $chunkdir, 'Chunk directory should not exist anymore'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/lib/OpenQA/SeleniumTest.pm new/openQA-5.1741427870.33ddb978/t/lib/OpenQA/SeleniumTest.pm --- old/openQA-5.1741336382.92b047c6/t/lib/OpenQA/SeleniumTest.pm 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/lib/OpenQA/SeleniumTest.pm 2025-03-08 10:57:50.000000000 +0100 @@ -16,6 +16,7 @@ use Carp; use Data::Dump 'pp'; +use Feature::Compat::Try; use IPC::Run qw(start); use Mojo::IOLoop::Server; use Mojo::Server::Daemon; @@ -49,7 +50,7 @@ sub start_driver ($mojoport) { # Connect to it - eval { + try { # enforce the JSON Wire protocol (instead of using W3C WebDriver protocol) # note: This is required with Selenium::Remote::Driver 1.36 which would now use W3C mode leading # to errors like "unknown command: unknown command: Cannot call non W3C standard command while @@ -97,8 +98,8 @@ $_driver->set_window_size(600, 800); $_driver->get("http://localhost:$mojoport/"); - }; - die $@ if ($@); + } + catch ($e) { die $e } return $_driver; } @@ -336,7 +337,7 @@ } return defined $element; }, - $args{description} // ($selector . ' present'), + $args{description} // $args{desc} // ($selector . ' present'), $args{timeout}, $args{check_interval}, ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/lib/OpenQA/Test/Utils.pm new/openQA-5.1741427870.33ddb978/t/lib/OpenQA/Test/Utils.pm --- old/openQA-5.1741336382.92b047c6/t/lib/OpenQA/Test/Utils.pm 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/lib/OpenQA/Test/Utils.pm 2025-03-08 10:57:50.000000000 +0100 @@ -32,6 +32,7 @@ use Mojo::Server::Daemon; use Mojo::IOLoop::Server; use Test::MockModule; +use Feature::Compat::Try; use Time::HiRes 'sleep'; BEGIN { @@ -595,8 +596,10 @@ my $io_loop_mock = Test::MockModule->new('Mojo::IOLoop'); $io_loop_mock->redefine( # avoid forking to prevent coverage analysis from slowing down the test significantly subprocess => sub ($io_loop, $function, $callback) { - my @result = eval { $function->() }; - my $error = $@; + my @result; + my $error = ''; + try { @result = $function->() } + catch ($e) { $error = $e } $io_loop->next_tick(sub { $callback->(undef, $error, @result) }); }) if $args{subprocess}; return $io_loop_mock; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/ui/10-tests_overview.t new/openQA-5.1741427870.33ddb978/t/ui/10-tests_overview.t --- old/openQA-5.1741336382.92b047c6/t/ui/10-tests_overview.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/ui/10-tests_overview.t 2025-03-08 10:57:50.000000000 +0100 @@ -445,7 +445,7 @@ $driver->find_element('#filter-machine')->send_keys('uefi'); $driver->find_element('#filter-panel button[type="submit"]')->click(); - like wait_for_element(selector => '#flavor_DVD_arch_x86_64')->get_text, qr/x86_64/, 'DVD/x86_64 present'; + wait_for_element(selector => '#flavor_DVD_arch_x86_64', like => qr/x86_64/, desc => 'DVD/x86_64 present'); element_not_present("#$_") for qw(flavor_DVD_arch_i586 flavor_GNOME-Live_arch_i686 flavor_NET_arch_x86_64); is element_prop('filter-machine'), 'uefi', 'machine filter still visible in form'; @@ -457,8 +457,8 @@ $driver->find_element('#filter-machine')->send_keys('64bit,uefi'); $driver->find_element('#filter-panel button[type="submit"]')->click(); - like wait_for_element(selector => '#flavor_DVD_arch_x86_64')->get_text, qr/x86_64/, 'DVD/x86_64 still present'; - like wait_for_element(selector => '#flavor_NET_arch_x86_64')->get_text, qr/x86_64/, 'NET/x86_64 present'; + wait_for_element(selector => '#flavor_NET_arch_x86_64', like => qr/x86_64/, desc => 'NET/x86_64 present'); + wait_for_element(selector => '#flavor_DVD_arch_x86_64', like => qr/x86_64/, desc => 'DVD/x86_64 still present'); element_not_present("#$_") for qw(flavor_DVD_arch_i586 flavor_GNOME-Live_arch_i686); }; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1741336382.92b047c6/t/ui/15-comments.t new/openQA-5.1741427870.33ddb978/t/ui/15-comments.t --- old/openQA-5.1741336382.92b047c6/t/ui/15-comments.t 2025-03-07 09:33:02.000000000 +0100 +++ new/openQA-5.1741427870.33ddb978/t/ui/15-comments.t 2025-03-08 10:57:50.000000000 +0100 @@ -301,8 +301,8 @@ my $textarea = $driver->find_element_by_id('text'); like $textarea->get_value, qr/label:force_result:new_result/, 'label template added'; $driver->find_element_by_id('submitComment')->click; - eval { wait_for_ajax(msg => 'alert when trying to submit comment') }; - like $@, qr/unexpected alert/, 'alert already shown shown when trying to wait for it' if $@; + throws_ok { wait_for_ajax(msg => 'alert when trying to submit comment') } qr/unexpected alert/, + 'alert already shown shown when trying to wait for it'; like $driver->get_alert_text, qr/Invalid result 'new_result' for force_result/, 'error from server shown'; $driver->dismiss_alert; $textarea->clear; ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.hWQh6w/_old 2025-03-10 18:05:39.891404432 +0100 +++ /var/tmp/diff_new_pack.hWQh6w/_new 2025-03-10 18:05:39.895404597 +0100 @@ -1,5 +1,5 @@ name: openQA -version: 5.1741336382.92b047c6 -mtime: 1741336382 -commit: 92b047c648f089e13155dbe839fd0c115fbc0363 +version: 5.1741427870.33ddb978 +mtime: 1741427870 +commit: 33ddb978ae5dfcbb1162db1b8ca7f5862b0c8633