Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package openQA for openSUSE:Factory checked 
in at 2026-10-06 19:15:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openQA (Old)
 and      /work/SRC/openSUSE:Factory/.openQA.new.3698736 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "openQA"

Tue Oct  6 19:15:27 2026 rev:885 rq:1382597 version:5.1791003975.6dc1de2e

Changes:
--------
--- /work/SRC/openSUSE:Factory/openQA/openQA.changes    2026-10-01 
16:43:33.396267170 +0200
+++ /work/SRC/openSUSE:Factory/.openQA.new.3698736/openQA.changes       
2026-10-06 19:16:15.305105669 +0200
@@ -1,0 +2,32 @@
+Mon Oct 05 13:48:59 UTC 2026 - [email protected]
+
+- Update to version 5.1791003975.6dc1de2e:
+  * chore(deps): Dependency cron 2026-10-03
+  * chore(deps): Dependency cron 2026-10-02
+  * feat: Improve displaying action buttons next to text results
+  * refactor: Style step actions for text results in a common place
+  * chore(deps): Dependency cron 2026-10-01
+
+-------------------------------------------------------------------
+Wed Sep 30 16:46:18 UTC 2026 - [email protected]
+
+- Update to version 5.1790786766.16015723:
+  * test(devel-mode): Open needle editor reliably in 2nd tab
+  * docs: document run-webui-mock-env
+  * feat(openqa-cli): Improve behavior when being rate limited
+  * feat: Keep reserved workers usable for verification jobs
+  * fix(test): track pause offset and fail fast in developer mode test
+
+-------------------------------------------------------------------
+Wed Sep 30 11:13:37 UTC 2026 - [email protected]
+
+- Update to version 5.1790766760.03fa83c3:
+  * feat(openqa-cli): Improve behavior when being rate limited
+  * feat: Keep reserved workers usable for verification jobs
+  * fix(test): track pause offset and fail fast in developer mode test
+  * fix(test): report pass and match in wait_for_developer_console_like
+  * refactor(test): extract redundant tab verification helper
+  * fix(test): use monotonic timeouts and robust wait in Selenium helpers
+  * fix(scheduler): emit openqa_job_cancel event on scheduler cancellation
+
+-------------------------------------------------------------------

Old:
----
  openQA-5.1790713243.ef39a05e.obscpio

New:
----
  openQA-5.1791003975.6dc1de2e.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ openQA-client-test.spec ++++++
--- /var/tmp/diff_new_pack.7MwZRx/_old  2026-10-06 19:16:18.683247031 +0200
+++ /var/tmp/diff_new_pack.7MwZRx/_new  2026-10-06 19:16:18.686247157 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-client
 Name:           %{short_name}-test
-Version:        5.1790713243.ef39a05e
+Version:        5.1791003975.6dc1de2e
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-devel-test.spec ++++++
--- /var/tmp/diff_new_pack.7MwZRx/_old  2026-10-06 19:16:18.748249751 +0200
+++ /var/tmp/diff_new_pack.7MwZRx/_new  2026-10-06 19:16:18.758250170 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-devel
 Name:           %{short_name}-test
-Version:        5.1790713243.ef39a05e
+Version:        5.1791003975.6dc1de2e
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA-test.spec ++++++
--- /var/tmp/diff_new_pack.7MwZRx/_old  2026-10-06 19:16:18.827253057 +0200
+++ /var/tmp/diff_new_pack.7MwZRx/_new  2026-10-06 19:16:18.834253350 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA
 Name:           %{short_name}-test
-Version:        5.1790713243.ef39a05e
+Version:        5.1791003975.6dc1de2e
 Release:        0
 Summary:        Test package for openQA
 License:        GPL-2.0-or-later

++++++ openQA-worker-test.spec ++++++
--- /var/tmp/diff_new_pack.7MwZRx/_old  2026-10-06 19:16:18.890255694 +0200
+++ /var/tmp/diff_new_pack.7MwZRx/_new  2026-10-06 19:16:18.896255945 +0200
@@ -18,7 +18,7 @@
 
 %define         short_name openQA-worker
 Name:           %{short_name}-test
-Version:        5.1790713243.ef39a05e
+Version:        5.1791003975.6dc1de2e
 Release:        0
 Summary:        Test package for %{short_name}
 License:        GPL-2.0-or-later

++++++ openQA.spec ++++++
--- /var/tmp/diff_new_pack.7MwZRx/_old  2026-10-06 19:16:18.963258748 +0200
+++ /var/tmp/diff_new_pack.7MwZRx/_new  2026-10-06 19:16:18.967258916 +0200
@@ -104,7 +104,7 @@
 %define devel_requires %devel_no_selenium_requires chromedriver
 
 Name:           openQA
-Version:        5.1790713243.ef39a05e
+Version:        5.1791003975.6dc1de2e
 Release:        0
 Summary:        Framework for automated system-level testing (web-frontend, 
scheduler and tools)
 Group:          Development/Tools/Other

++++++ openQA-5.1790713243.ef39a05e.obscpio -> 
openQA-5.1791003975.6dc1de2e.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1790713243.ef39a05e/assets/javascripts/render.js 
new/openQA-5.1791003975.6dc1de2e/assets/javascripts/render.js
--- old/openQA-5.1790713243.ef39a05e/assets/javascripts/render.js       
2026-09-29 22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/assets/javascripts/render.js       
2026-10-03 07:06:15.000000000 +0200
@@ -209,7 +209,7 @@
     }
     if (step.text && title !== 'Soft Failed') {
       hasTextResults = true;
-      const stepActions = E('span', [], {class: 'step_actions', style: 'float: 
right'});
+      const stepActions = E('span', [], {class: 'step_actions 
step_actions_text'});
       stepActions.innerHTML = renderTemplate(snippets.bug_actions, {MODULE: 
module.name, STEP: step.num});
 
       stepActions.append(createLogLink(module, step));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1790713243.ef39a05e/assets/javascripts/test_result.js 
new/openQA-5.1791003975.6dc1de2e/assets/javascripts/test_result.js
--- old/openQA-5.1790713243.ef39a05e/assets/javascripts/test_result.js  
2026-09-29 22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/assets/javascripts/test_result.js  
2026-10-03 07:06:15.000000000 +0200
@@ -100,6 +100,20 @@
   }
 }
 
+function checkLineBreaks(text, threshold) {
+  for (let lineBreaks = 0, offset = 0; (offset = text.indexOf('\n', offset + 
1)) >= 0;)
+    if (++lineBreaks >= threshold) return true;
+  return false;
+}
+
+function showActionButtonsVertically() {
+  const pre = document.querySelector('.preview_container_inner pre');
+  const actions = document.querySelector('.preview_container_inner 
.step_actions_text');
+  if (pre && actions && !actions.style.width && 
checkLineBreaks(pre.textContent, 3)) {
+    actions.style.width = '30px';
+  }
+}
+
 function previewSuccess(stepPreviewContainer, data, force) {
   // skip if preview has been dismissed
   if (!stepPreviewContainer.hasClass('current_preview')) {
@@ -125,6 +139,8 @@
     pout.css('top', '');
   }
 
+  showActionButtonsVertically();
+
   if (!(pin.find('pre').length || pin.find('audio').length)) {
     const imageSource = pin.find('#step_view').data('image');
     if (!imageSource) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1790713243.ef39a05e/assets/stylesheets/test-details.scss 
new/openQA-5.1791003975.6dc1de2e/assets/stylesheets/test-details.scss
--- old/openQA-5.1790713243.ef39a05e/assets/stylesheets/test-details.scss       
2026-09-29 22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/assets/stylesheets/test-details.scss       
2026-10-03 07:06:15.000000000 +0200
@@ -441,6 +441,9 @@
     color: green;
   }
 }
+.step_actions_text {
+  float: right;
+}
 
 // filter for test details
 .details-filter {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1790713243.ef39a05e/docs/Contributing.md 
new/openQA-5.1791003975.6dc1de2e/docs/Contributing.md
--- old/openQA-5.1790713243.ef39a05e/docs/Contributing.md       2026-09-29 
22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/docs/Contributing.md       2026-10-03 
07:06:15.000000000 +0200
@@ -443,6 +443,21 @@
 Also find more details in
 [Run tests without Container](Contributing.md#run-tests-without-container).
 
+#### Local web UI with mock data
+
+To start a local web UI pre-loaded with mock fixtures and mock assets
+without needing to manually set up and populate a database, run:
+
+```sh
+make run-webui-mock-env
+```
+
+This starts the web UI daemon listening at <http://localhost:9526>.
+
+You can customize the fixtures loaded by setting `FIXTURES_GLOB` (e.g.
+`FIXTURES_GLOB='01-jobs.pl 03-users.pl' make run-webui-mock-env`) or preserve
+an existing schema between runs with `RESET_SCHEMA=0`.
+
 #### Further tips
 
 - It is also useful to start openQA with morbo which allows applying changes
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1790713243.ef39a05e/lib/OpenQA/Command.pm 
new/openQA-5.1791003975.6dc1de2e/lib/OpenQA/Command.pm
--- old/openQA-5.1790713243.ef39a05e/lib/OpenQA/Command.pm      2026-09-29 
22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/lib/OpenQA/Command.pm      2026-10-03 
07:06:15.000000000 +0200
@@ -134,18 +134,19 @@
     for (;; --$retries) {
         my $new_tx = $client->start(Mojo::Transaction::HTTP->new(req => 
$tx->req));
         my $res_code = $new_tx->res->code // 0;
-        return $self->handle_result($new_tx, $tx) if $res_code !~ 
/^(?:50[23]|0)$/ || $retries <= 0;
+        return $self->handle_result($new_tx, $tx) if $res_code !~ 
/^(?:408|429|50[0234]|0)$/ || $retries <= 0;
         my $waited = time - $start;
         my $error = $new_tx->error;
         my $error_msg = $error ? " ($error->{message})" : '';
         my $error_info = $res_code == 0 ? "connection error$error_msg" : 
"error $res_code$error_msg";
+        my $sleep_duration = $client->evaluate_retry_after($new_tx) // $delay;
         my $url = $new_tx->req->url;
         my $port = $url->port // ($url->scheme && $url->scheme eq 'https' ? 
443 : 80);
         my $target = ($url->host || 'localhost') . ":$port";
         print STDERR encode('UTF-8',
-"Request to $target failed, hit $error_info, retrying up to $retries more 
times after waiting … (delay: $delay; waited ${waited}s)\n"
+"Request to $target failed, hit $error_info, retrying up to $retries more 
times after waiting … (delay: $sleep_duration; waited ${waited}s)\n"
         );
-        sleep $delay;
+        sleep $sleep_duration;
         $delay *= $factor;
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1790713243.ef39a05e/t/33-developer_mode.t 
new/openQA-5.1791003975.6dc1de2e/t/33-developer_mode.t
--- old/openQA-5.1790713243.ef39a05e/t/33-developer_mode.t      2026-09-29 
22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/t/33-developer_mode.t      2026-10-03 
07:06:15.000000000 +0200
@@ -237,7 +237,7 @@
     #       $pause_start as start offset when checking for 
"outstanding_images" to consider also log output before
     #       "match=on_prompt timed out" and thus not asserting a specific 
order of messages.
     wait_for_developer_console_like($driver, qr/match=on_prompt timed out/, 
'paused on assert_screen timeout (again)');
-    wait_for_developer_console_like(
+    my $upload_started_pos = wait_for_developer_console_like(
         $driver,
         qr/\"outstanding_images\":[1-9]*/,
         'progress of image upload received',
@@ -245,15 +245,24 @@
     );
     my $upload_done_pos
       = wait_for_developer_console_like($driver, qr/\"outstanding_images\":0/, 
'image upload has finished',
-        ONE_MINUTE, $pause_start);
+        ONE_MINUTE, $upload_started_pos);
     $driver->execute_script(
 "window.lastWaitForDevelConsoleMsgMatch = 
Math.max(window.lastWaitForDevelConsoleMsgMatch || 0, $upload_done_pos);"
     );
 
     # open needle editor in 2nd tab
     my $needle_editor_url = '/tests/1/edit';
-    $second_tab = open_new_tab($needle_editor_url);
+    $second_tab = open_new_tab('about:blank');
     $driver->switch_to_window($second_tab);
+    wait_until(
+        sub {
+            $driver->get($needle_editor_url);
+            return $driver->get_title() eq 'openQA: Needle Editor';
+        },
+        'needle editor loaded',
+        30,
+        1
+    );
     my $content = wait_for_element(selector => '#content')->get_text();
     $driver->title_is('openQA: Needle Editor', 'needle editor page title');
     unlike $content, qr/upload.*still in progress/, 'needle editor not 
available but should be according to progress';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1790713243.ef39a05e/t/43-cli-api.t 
new/openQA-5.1791003975.6dc1de2e/t/43-cli-api.t
--- old/openQA-5.1790713243.ef39a05e/t/43-cli-api.t     2026-09-29 
22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/t/43-cli-api.t     2026-10-03 
07:06:15.000000000 +0200
@@ -14,6 +14,7 @@
 use Mojo::File qw(tempfile);
 use Mojo::Util qw(encode);
 use Test::MockModule;
+use Test::Mock::Time;
 use OpenQA::CLI;
 use OpenQA::CLI::api;
 use OpenQA::Test::Case;
@@ -52,6 +53,8 @@
     '/test/pub/error' => [format => ['json']] => {format => 'html'} => sub 
($c) {
         my $status_for_error_count = $c->param('status' . ++$error_count);
         my $status = $status_for_error_count // $c->param('status') // 500;
+        my $retry_after = $c->param('retry_after');
+        $c->res->headers->header('Retry-After' => $retry_after) if defined 
$retry_after;
         note "returning status $status response (error count is $error_count)";
         $c->respond_to(
             json => {status => $status, json => {error => $status}},
@@ -465,6 +468,12 @@
     like $stderr, qr/failed, hit error 502.*retrying/s, '(stderr) request can 
succeed after failing before';
     is $result[0], 0, 'exited with zero return code after success on 2nd 
attempt';
 
+    $error_count = 0;
+    @params = (@host, 'test/pub/error', 'status=429', 'retry_after=0', 
'status2=200');
+    ($stdout, $stderr, @result) = capture sub { $api->run('--retries', '1', 
@params) };
+    like $stderr, qr/failed, hit error 429.*retrying.*delay: 0/s, 'requests on 
429 are retried respecting Retry-After';
+    is $result[0], 0, 'exited with zero return code after 429 success on 2nd 
attempt';
+
     @params = ('--host', 'http://localhost:123456', '--retries', 1, 'api', 
'test');
     ($stdout, $stderr, @result) = capture sub { $api->run(@params) };
     like $stderr, qr/Connection refused/, 'aborts on connection refused';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1790713243.ef39a05e/t/lib/OpenQA/SeleniumTest.pm 
new/openQA-5.1791003975.6dc1de2e/t/lib/OpenQA/SeleniumTest.pm
--- old/openQA-5.1790713243.ef39a05e/t/lib/OpenQA/SeleniumTest.pm       
2026-09-29 22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/t/lib/OpenQA/SeleniumTest.pm       
2026-10-03 07:06:15.000000000 +0200
@@ -116,10 +116,11 @@
 # opens a new tab/window for the specified URL and returns its handle
 # remarks:
 #  * does not switch to the new tab, use $driver->switch_to_window() for that
+#  * to reliably load a page, switch to the new tab and use $driver->get($url)
 #  * see 33-developer_mode.t for an example
-sub open_new_tab ($url) {
+sub open_new_tab ($url = 'about:blank') {
     my %old_handles = map { $_ => 1 } @{$_DRIVER->get_window_handles()};
-    $url = $url ? qq{"$url"} : 'window.location';
+    $url = $url ? qq{"$url"} : '"about:blank"';
     $_DRIVER->execute_script("window.open($url);");
 
     my $new_handle;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/openQA-5.1790713243.ef39a05e/templates/webapi/step/viewtext.html.ep 
new/openQA-5.1791003975.6dc1de2e/templates/webapi/step/viewtext.html.ep
--- old/openQA-5.1790713243.ef39a05e/templates/webapi/step/viewtext.html.ep     
2026-09-29 22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/templates/webapi/step/viewtext.html.ep     
2026-10-03 07:06:15.000000000 +0200
@@ -1,4 +1,4 @@
-<span class="step_actions" style="float: right;">
+<span class="step_actions step_actions_text">
     %= bug_report_actions
 </span>
 <pre><%== rendered_refs_no_shortening $textresult %></pre>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openQA-5.1790713243.ef39a05e/tools/ci/autoinst.sha 
new/openQA-5.1791003975.6dc1de2e/tools/ci/autoinst.sha
--- old/openQA-5.1790713243.ef39a05e/tools/ci/autoinst.sha      2026-09-29 
22:20:43.000000000 +0200
+++ new/openQA-5.1791003975.6dc1de2e/tools/ci/autoinst.sha      2026-10-03 
07:06:15.000000000 +0200
@@ -1 +1 @@
-5.044000-87022d5346d2a913cda4cb45360256e5f32012f8
\ No newline at end of file
+5.044000-b728c272762ca2f93a58dc61fb379d2e99d60bc9
\ No newline at end of file

++++++ openQA.obsinfo ++++++
--- /var/tmp/diff_new_pack.7MwZRx/_old  2026-10-06 19:16:30.904758453 +0200
+++ /var/tmp/diff_new_pack.7MwZRx/_new  2026-10-06 19:16:30.910758704 +0200
@@ -1,5 +1,5 @@
 name: openQA
-version: 5.1790713243.ef39a05e
-mtime: 1790713243
-commit: ef39a05e777e06e297bc2b5d101a8b2fe6d1cdc7
+version: 5.1791003975.6dc1de2e
+mtime: 1791003975
+commit: 6dc1de2e2de734eed0358a0e5a68e3880c04b144
 

Reply via email to