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-02-26 18:51:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.29461 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Thu Feb 26 18:51:59 2026 rev:812 rq:1335177 version:5.1772031289.93bc2a13 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2026-02-25 21:10:07.465064793 +0100 +++ /work/SRC/openSUSE:Factory/.openQA.new.29461/openQA.changes 2026-02-26 18:52:05.958142125 +0100 @@ -1,0 +2,13 @@ +Wed Feb 25 20:08:14 UTC 2026 - [email protected] + +- Update to version 5.1772031289.93bc2a13: + * docs(image): describe the TW image with openQA available in o3 + * fix(t/03-auth): avoid 'Too many open files' with mocks + * fix: avoid constant redefinition warnings in ScheduledProducts + * feat: add aggregate favicons for test overview + * build: improve cleanup of generated favicon assets + * feat: add Makefile targets to run services with temporary test database + * ci(helm): increase timeout on ct install + * feat: add gitlint for conventional commit checks + +------------------------------------------------------------------- Old: ---- openQA-5.1771942065.808b073f.obscpio New: ---- openQA-5.1772031289.93bc2a13.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.FulGyX/_old 2026-02-26 18:52:08.514248525 +0100 +++ /var/tmp/diff_new_pack.FulGyX/_new 2026-02-26 18:52:08.518248691 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1771942065.808b073f +Version: 5.1772031289.93bc2a13 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-devel-test.spec ++++++ --- /var/tmp/diff_new_pack.FulGyX/_old 2026-02-26 18:52:08.554250190 +0100 +++ /var/tmp/diff_new_pack.FulGyX/_new 2026-02-26 18:52:08.558250356 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-devel Name: %{short_name}-test -Version: 5.1771942065.808b073f +Version: 5.1772031289.93bc2a13 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.FulGyX/_old 2026-02-26 18:52:08.606252354 +0100 +++ /var/tmp/diff_new_pack.FulGyX/_new 2026-02-26 18:52:08.606252354 +0100 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1771942065.808b073f +Version: 5.1772031289.93bc2a13 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.FulGyX/_old 2026-02-26 18:52:08.642253852 +0100 +++ /var/tmp/diff_new_pack.FulGyX/_new 2026-02-26 18:52:08.646254020 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1771942065.808b073f +Version: 5.1772031289.93bc2a13 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.FulGyX/_old 2026-02-26 18:52:08.718257017 +0100 +++ /var/tmp/diff_new_pack.FulGyX/_new 2026-02-26 18:52:08.722257183 +0100 @@ -99,7 +99,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1771942065.808b073f +Version: 5.1772031289.93bc2a13 Release: 0 Summary: The openQA web-frontend, scheduler and tools License: GPL-2.0-or-later ++++++ openQA-5.1771942065.808b073f.obscpio -> openQA-5.1772031289.93bc2a13.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/.github/workflows/commit-message-checker.yml new/openQA-5.1772031289.93bc2a13/.github/workflows/commit-message-checker.yml --- old/openQA-5.1771942065.808b073f/.github/workflows/commit-message-checker.yml 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/.github/workflows/commit-message-checker.yml 2026-02-25 15:54:49.000000000 +0100 @@ -1,15 +1,19 @@ --- -# https://github.com/marketplace/actions/gs-commit-message-checker name: 'Commit message check' -# yamllint disable-line rule:truthy on: pull_request: push: branches: - - '!master' # we must not fix commit messages when they already reached master + - '!master' jobs: check-commit-message: - secrets: - accessToken: "${{ secrets.GITHUB_TOKEN }}" - uses: os-autoinst/os-autoinst-common/.github/workflows/base-commit-message-checker.yml@master + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Install gitlint + run: pip install gitlint-core + - name: Check commit messages + run: gitlint --commits origin/${{ github.base_ref }}..HEAD diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/.gitlint new/openQA-5.1772031289.93bc2a13/.gitlint --- old/openQA-5.1771942065.808b073f/.gitlint 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/.gitlint 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,3 @@ +[general] +contrib=contrib-title-conventional-commits +ignore=body-min-length,body-is-missing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/Makefile new/openQA-5.1772031289.93bc2a13/Makefile --- old/openQA-5.1771942065.808b073f/Makefile 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/Makefile 2026-02-25 15:54:49.000000000 +0100 @@ -282,6 +282,22 @@ setup-database: test -d $(TEST_PG_PATH) && (pg_ctl -D $(TEST_PG_PATH) -s status >&/dev/null || pg_ctl -D $(TEST_PG_PATH) -s start) || ./t/test_postgresql $(TEST_PG_PATH) +define RUN_SERVICE_TEST_DB + OPENQA_BASEDIR=t/data \ + OPENQA_DATABASE=test \ + OPENQA_WEBUI_MODE=test \ + TEST_PG="DBI:Pg:dbname=openqa_test;host=$(TEST_PG_PATH)" \ + $(1) +endef + +.PHONY: run-webui-test-db +run-webui-test-db: setup-database + $(call RUN_SERVICE_TEST_DB,script/openqa-webui-daemon) + +.PHONY: run-gru-test-db +run-gru-test-db: setup-database + $(call RUN_SERVICE_TEST_DB,script/openqa-gru) + # prepares running the tests within a container (eg. pulls os-autoinst) and then runs the tests considering # the test matrix environment variables # note: This is supposed to run within the container unlike `launch-container-to-run-tests-within` @@ -333,18 +349,18 @@ coverage-html: coverage $(MAKE) coverage-report-html -public/favicon.ico: assets/images/logo.svg +public/favicon.ico: $(wildcard assets/images/*.svg) for w in 16 32 64 128; do \ (cd assets/images/ && for i in *.svg; do \ - inkscape -e $${i%.svg}-$$w.png -w $$w $$i; \ + inkscape -o $${i%.svg}-$$w.png -w $$w $$i; \ done); \ done convert assets/images/logo-16.png assets/images/logo-32.png assets/images/logo-64.png assets/images/logo-128.png -background white -alpha remove public/favicon.ico - rm assets/images/logo-128.png assets/images/logo-32.png assets/images/logo-64.png + rm assets/images/*-32.png assets/images/*-64.png assets/images/*-128.png # all additional checks not called by prove .PHONY: test-checkstyle-standalone -test-checkstyle-standalone: test-shellcheck test-yaml test-critic test-shfmt +test-checkstyle-standalone: test-shellcheck test-yaml test-critic test-shfmt test-gitlint ifeq ($(CONTAINER_TEST),1) test-checkstyle-standalone: test-check-containers endif @@ -373,6 +389,15 @@ @which shfmt >/dev/null 2>&1 || (echo "Command 'shfmt' not found, can not execute bash script syntax checks" && false) shfmt -d -i 4 -bn -ci -sr $(shellfiles) +.PHONY: test-gitlint +test-gitlint: + @which gitlint >/dev/null 2>&1 || (echo "Command 'gitlint' not found, can not execute commit message checks. Install with 'python3-gitlint' (openSUSE) or 'pip install gitlint-core'" && false) + @if git rev-parse --verify master >/dev/null 2>&1 && [ "$$(git rev-parse HEAD)" != "$$(git rev-parse master)" ]; then \ + gitlint --commits master..HEAD; \ + else \ + gitlint; \ + fi + .PHONY: test-check-containers test-check-containers: tools/static_check_containers diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/assetpack.def new/openQA-5.1772031289.93bc2a13/assets/assetpack.def --- old/openQA-5.1771942065.808b073f/assets/assetpack.def 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/assetpack.def 2026-02-25 15:54:49.000000000 +0100 @@ -214,6 +214,27 @@ ! logo-aborted-16.png < images/logo-cancelled-16.png +! logo-aggregate-passed-16.png +< images/logo-aggregate-passed-16.png + +! logo-aggregate-failed-16.png +< images/logo-aggregate-failed-16.png + +! logo-aggregate-softfailed-16.png +< images/logo-aggregate-softfailed-16.png + +! logo-aggregate-not_complete-16.png +< images/logo-aggregate-not_complete-16.png + +! logo-aggregate-aborted-16.png +< images/logo-aggregate-aborted-16.png + +! logo-aggregate-scheduled-16.png +< images/logo-aggregate-scheduled-16.png + +! logo-aggregate-running-16.png +< images/logo-aggregate-running-16.png + ! logo.svg < images/logo.svg @@ -247,6 +268,27 @@ ! logo-aborted.svg < images/logo-cancelled.svg +! logo-aggregate-passed.svg +< images/logo-aggregate-passed.svg + +! logo-aggregate-failed.svg +< images/logo-aggregate-failed.svg + +! logo-aggregate-softfailed.svg +< images/logo-aggregate-softfailed.svg + +! logo-aggregate-not_complete.svg +< images/logo-aggregate-not_complete.svg + +! logo-aggregate-aborted.svg +< images/logo-aggregate-aborted.svg + +! logo-aggregate-scheduled.svg +< images/logo-aggregate-scheduled.svg + +! logo-aggregate-running.svg +< images/logo-aggregate-running.svg + ! terminal.svg < images/terminal.svg Binary files old/openQA-5.1771942065.808b073f/assets/images/audio-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/audio-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-aborted-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-aborted-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-aborted.svg new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-aborted.svg --- old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-aborted.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-aborted.svg 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <rect x="2" y="2" width="20" height="20" rx="6" ry="6" fill="#aaaaaa" /> + <path d="m 6.3744266,6.2312 c -1.771702,0.025 -3.4309811,0.7278 -4.6601561,1.957 -2.43164883,2.6979 -1.86820453,6.9869 -0.1542969,8.7266 1.7139078,1.7397 3.0996094,1.9218 3.0996094,1.9218 l 0.9785156,-2.3456 c -0.5068951,-0.2538 -1.87809,-1.1527 -2.4628906,-2.1504 -0.5848007,-0.9977 -0.6052241,-3.2596 1.1445312,-4.6485 1.7497553,-1.3888 3.9841699,-0.8087 4.9042957,0.4024 0.9201291,1.2111 1.1658381,2.159 0.8678021,4.801 l -0.0026,0.014 c -0.5329541,1.8284 -0.07067,3.857 1.371095,5.2988 1.308985,1.3069 2.97532,1.5515 4.779297,1.1425 l -0.04102,-2.2812 c -1.066824,0.4244 -2.062804,0.1729 -2.875,-0.6387 -1.122474,-1.1229 -1.122474,-2.9433 0,-4.0664 0.549633,-0.5497 1.296921,-0.8531 2.074219,-0.8418 0.748046,0.011 1.463238,0.3128 1.992187,0.8418 0.575137,0.5774 0.801938,1.3872 0.78125,1.793 l -0.06055,5.375 h 1.28125 l 0.0098,0.01 h 2.255859 l 0.742188,-2.0039 -2.1875,-0.01 c -0.007,-1.4735 -0.0096,-3.1809 0.01758,-3.8457 0.04533,-1.1075 -0.07231,-2.1192 -1.083984,-3.1328 -1.030141,-1. 0302 -2.401567,-1.5255 -3.804671,-1.5255 -0.827556,0 -1.682166,0.2015 -2.449219,0.5664 -0.120502,-1.5578 -0.821911,-2.8509 -1.761718,-3.6699 -1.8688321,-1.6285 -2.9841577,-1.7166 -4.7558596,-1.6914 z m 0.3378908,8.8828 -1.8945312,5.0098 1.8515623,1.2656 1.8203124,-4.7715 z" fill="white" fill-opacity="0.8" /> +</svg> Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-failed-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-failed-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-failed.svg new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-failed.svg --- old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-failed.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-failed.svg 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <rect x="2" y="2" width="20" height="20" rx="6" ry="6" fill="#ff4e46" /> + <path d="m 6.3744266,6.2312 c -1.771702,0.025 -3.4309811,0.7278 -4.6601561,1.957 -2.43164883,2.6979 -1.86820453,6.9869 -0.1542969,8.7266 1.7139078,1.7397 3.0996094,1.9218 3.0996094,1.9218 l 0.9785156,-2.3456 c -0.5068951,-0.2538 -1.87809,-1.1527 -2.4628906,-2.1504 -0.5848007,-0.9977 -0.6052241,-3.2596 1.1445312,-4.6485 1.7497553,-1.3888 3.9841699,-0.8087 4.9042957,0.4024 0.9201291,1.2111 1.1658381,2.159 0.8678021,4.801 l -0.0026,0.014 c -0.5329541,1.8284 -0.07067,3.857 1.371095,5.2988 1.308985,1.3069 2.97532,1.5515 4.779297,1.1425 l -0.04102,-2.2812 c -1.066824,0.4244 -2.062804,0.1729 -2.875,-0.6387 -1.122474,-1.1229 -1.122474,-2.9433 0,-4.0664 0.549633,-0.5497 1.296921,-0.8531 2.074219,-0.8418 0.748046,0.011 1.463238,0.3128 1.992187,0.8418 0.575137,0.5774 0.801938,1.3872 0.78125,1.793 l -0.06055,5.375 h 1.28125 l 0.0098,0.01 h 2.255859 l 0.742188,-2.0039 -2.1875,-0.01 c -0.007,-1.4735 -0.0096,-3.1809 0.01758,-3.8457 0.04533,-1.1075 -0.07231,-2.1192 -1.083984,-3.1328 -1.030141,-1. 0302 -2.401567,-1.5255 -3.804671,-1.5255 -0.827556,0 -1.682166,0.2015 -2.449219,0.5664 -0.120502,-1.5578 -0.821911,-2.8509 -1.761718,-3.6699 -1.8688321,-1.6285 -2.9841577,-1.7166 -4.7558596,-1.6914 z m 0.3378908,8.8828 -1.8945312,5.0098 1.8515623,1.2656 1.8203124,-4.7715 z" fill="white" fill-opacity="0.8" /> +</svg> Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-not_complete-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-not_complete-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-not_complete.svg new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-not_complete.svg --- old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-not_complete.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-not_complete.svg 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <rect x="2" y="2" width="20" height="20" rx="6" ry="6" fill="#af1e11" /> + <path d="m 6.3744266,6.2312 c -1.771702,0.025 -3.4309811,0.7278 -4.6601561,1.957 -2.43164883,2.6979 -1.86820453,6.9869 -0.1542969,8.7266 1.7139078,1.7397 3.0996094,1.9218 3.0996094,1.9218 l 0.9785156,-2.3456 c -0.5068951,-0.2538 -1.87809,-1.1527 -2.4628906,-2.1504 -0.5848007,-0.9977 -0.6052241,-3.2596 1.1445312,-4.6485 1.7497553,-1.3888 3.9841699,-0.8087 4.9042957,0.4024 0.9201291,1.2111 1.1658381,2.159 0.8678021,4.801 l -0.0026,0.014 c -0.5329541,1.8284 -0.07067,3.857 1.371095,5.2988 1.308985,1.3069 2.97532,1.5515 4.779297,1.1425 l -0.04102,-2.2812 c -1.066824,0.4244 -2.062804,0.1729 -2.875,-0.6387 -1.122474,-1.1229 -1.122474,-2.9433 0,-4.0664 0.549633,-0.5497 1.296921,-0.8531 2.074219,-0.8418 0.748046,0.011 1.463238,0.3128 1.992187,0.8418 0.575137,0.5774 0.801938,1.3872 0.78125,1.793 l -0.06055,5.375 h 1.28125 l 0.0098,0.01 h 2.255859 l 0.742188,-2.0039 -2.1875,-0.01 c -0.007,-1.4735 -0.0096,-3.1809 0.01758,-3.8457 0.04533,-1.1075 -0.07231,-2.1192 -1.083984,-3.1328 -1.030141,-1. 0302 -2.401567,-1.5255 -3.804671,-1.5255 -0.827556,0 -1.682166,0.2015 -2.449219,0.5664 -0.120502,-1.5578 -0.821911,-2.8509 -1.761718,-3.6699 -1.8688321,-1.6285 -2.9841577,-1.7166 -4.7558596,-1.6914 z m 0.3378908,8.8828 -1.8945312,5.0098 1.8515623,1.2656 1.8203124,-4.7715 z" fill="white" fill-opacity="0.8" /> +</svg> Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-passed-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-passed-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-passed.svg new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-passed.svg --- old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-passed.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-passed.svg 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <rect x="2" y="2" width="20" height="20" rx="6" ry="6" fill="#73ba25" /> + <path d="m 6.3744266,6.2312 c -1.771702,0.025 -3.4309811,0.7278 -4.6601561,1.957 -2.43164883,2.6979 -1.86820453,6.9869 -0.1542969,8.7266 1.7139078,1.7397 3.0996094,1.9218 3.0996094,1.9218 l 0.9785156,-2.3456 c -0.5068951,-0.2538 -1.87809,-1.1527 -2.4628906,-2.1504 -0.5848007,-0.9977 -0.6052241,-3.2596 1.1445312,-4.6485 1.7497553,-1.3888 3.9841699,-0.8087 4.9042957,0.4024 0.9201291,1.2111 1.1658381,2.159 0.8678021,4.801 l -0.0026,0.014 c -0.5329541,1.8284 -0.07067,3.857 1.371095,5.2988 1.308985,1.3069 2.97532,1.5515 4.779297,1.1425 l -0.04102,-2.2812 c -1.066824,0.4244 -2.062804,0.1729 -2.875,-0.6387 -1.122474,-1.1229 -1.122474,-2.9433 0,-4.0664 0.549633,-0.5497 1.296921,-0.8531 2.074219,-0.8418 0.748046,0.011 1.463238,0.3128 1.992187,0.8418 0.575137,0.5774 0.801938,1.3872 0.78125,1.793 l -0.06055,5.375 h 1.28125 l 0.0098,0.01 h 2.255859 l 0.742188,-2.0039 -2.1875,-0.01 c -0.007,-1.4735 -0.0096,-3.1809 0.01758,-3.8457 0.04533,-1.1075 -0.07231,-2.1192 -1.083984,-3.1328 -1.030141,-1. 0302 -2.401567,-1.5255 -3.804671,-1.5255 -0.827556,0 -1.682166,0.2015 -2.449219,0.5664 -0.120502,-1.5578 -0.821911,-2.8509 -1.761718,-3.6699 -1.8688321,-1.6285 -2.9841577,-1.7166 -4.7558596,-1.6914 z m 0.3378908,8.8828 -1.8945312,5.0098 1.8515623,1.2656 1.8203124,-4.7715 z" fill="white" fill-opacity="0.8" /> +</svg> Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-running-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-running-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-running.svg new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-running.svg --- old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-running.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-running.svg 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <rect x="2" y="2" width="20" height="20" rx="6" ry="6" fill="#8bdfff" /> + <path d="m 6.3744266,6.2312 c -1.771702,0.025 -3.4309811,0.7278 -4.6601561,1.957 -2.43164883,2.6979 -1.86820453,6.9869 -0.1542969,8.7266 1.7139078,1.7397 3.0996094,1.9218 3.0996094,1.9218 l 0.9785156,-2.3456 c -0.5068951,-0.2538 -1.87809,-1.1527 -2.4628906,-2.1504 -0.5848007,-0.9977 -0.6052241,-3.2596 1.1445312,-4.6485 1.7497553,-1.3888 3.9841699,-0.8087 4.9042957,0.4024 0.9201291,1.2111 1.1658381,2.159 0.8678021,4.801 l -0.0026,0.014 c -0.5329541,1.8284 -0.07067,3.857 1.371095,5.2988 1.308985,1.3069 2.97532,1.5515 4.779297,1.1425 l -0.04102,-2.2812 c -1.066824,0.4244 -2.062804,0.1729 -2.875,-0.6387 -1.122474,-1.1229 -1.122474,-2.9433 0,-4.0664 0.549633,-0.5497 1.296921,-0.8531 2.074219,-0.8418 0.748046,0.011 1.463238,0.3128 1.992187,0.8418 0.575137,0.5774 0.801938,1.3872 0.78125,1.793 l -0.06055,5.375 h 1.28125 l 0.0098,0.01 h 2.255859 l 0.742188,-2.0039 -2.1875,-0.01 c -0.007,-1.4735 -0.0096,-3.1809 0.01758,-3.8457 0.04533,-1.1075 -0.07231,-2.1192 -1.083984,-3.1328 -1.030141,-1. 0302 -2.401567,-1.5255 -3.804671,-1.5255 -0.827556,0 -1.682166,0.2015 -2.449219,0.5664 -0.120502,-1.5578 -0.821911,-2.8509 -1.761718,-3.6699 -1.8688321,-1.6285 -2.9841577,-1.7166 -4.7558596,-1.6914 z m 0.3378908,8.8828 -1.8945312,5.0098 1.8515623,1.2656 1.8203124,-4.7715 z" fill="white" fill-opacity="0.8" /> +</svg> Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-scheduled-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-scheduled-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-scheduled.svg new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-scheduled.svg --- old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-scheduled.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-scheduled.svg 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <rect x="2" y="2" width="20" height="20" rx="6" ry="6" fill="#3c6eb4" /> + <path d="m 6.3744266,6.2312 c -1.771702,0.025 -3.4309811,0.7278 -4.6601561,1.957 -2.43164883,2.6979 -1.86820453,6.9869 -0.1542969,8.7266 1.7139078,1.7397 3.0996094,1.9218 3.0996094,1.9218 l 0.9785156,-2.3456 c -0.5068951,-0.2538 -1.87809,-1.1527 -2.4628906,-2.1504 -0.5848007,-0.9977 -0.6052241,-3.2596 1.1445312,-4.6485 1.7497553,-1.3888 3.9841699,-0.8087 4.9042957,0.4024 0.9201291,1.2111 1.1658381,2.159 0.8678021,4.801 l -0.0026,0.014 c -0.5329541,1.8284 -0.07067,3.857 1.371095,5.2988 1.308985,1.3069 2.97532,1.5515 4.779297,1.1425 l -0.04102,-2.2812 c -1.066824,0.4244 -2.062804,0.1729 -2.875,-0.6387 -1.122474,-1.1229 -1.122474,-2.9433 0,-4.0664 0.549633,-0.5497 1.296921,-0.8531 2.074219,-0.8418 0.748046,0.011 1.463238,0.3128 1.992187,0.8418 0.575137,0.5774 0.801938,1.3872 0.78125,1.793 l -0.06055,5.375 h 1.28125 l 0.0098,0.01 h 2.255859 l 0.742188,-2.0039 -2.1875,-0.01 c -0.007,-1.4735 -0.0096,-3.1809 0.01758,-3.8457 0.04533,-1.1075 -0.07231,-2.1192 -1.083984,-3.1328 -1.030141,-1. 0302 -2.401567,-1.5255 -3.804671,-1.5255 -0.827556,0 -1.682166,0.2015 -2.449219,0.5664 -0.120502,-1.5578 -0.821911,-2.8509 -1.761718,-3.6699 -1.8688321,-1.6285 -2.9841577,-1.7166 -4.7558596,-1.6914 z m 0.3378908,8.8828 -1.8945312,5.0098 1.8515623,1.2656 1.8203124,-4.7715 z" fill="white" fill-opacity="0.8" /> +</svg> Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-softfailed-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-softfailed-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-softfailed.svg new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-softfailed.svg --- old/openQA-5.1771942065.808b073f/assets/images/logo-aggregate-softfailed.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/assets/images/logo-aggregate-softfailed.svg 2026-02-25 15:54:49.000000000 +0100 @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> + <rect x="2" y="2" width="20" height="20" rx="6" ry="6" fill="#eeb560" /> + <path d="m 6.3744266,6.2312 c -1.771702,0.025 -3.4309811,0.7278 -4.6601561,1.957 -2.43164883,2.6979 -1.86820453,6.9869 -0.1542969,8.7266 1.7139078,1.7397 3.0996094,1.9218 3.0996094,1.9218 l 0.9785156,-2.3456 c -0.5068951,-0.2538 -1.87809,-1.1527 -2.4628906,-2.1504 -0.5848007,-0.9977 -0.6052241,-3.2596 1.1445312,-4.6485 1.7497553,-1.3888 3.9841699,-0.8087 4.9042957,0.4024 0.9201291,1.2111 1.1658381,2.159 0.8678021,4.801 l -0.0026,0.014 c -0.5329541,1.8284 -0.07067,3.857 1.371095,5.2988 1.308985,1.3069 2.97532,1.5515 4.779297,1.1425 l -0.04102,-2.2812 c -1.066824,0.4244 -2.062804,0.1729 -2.875,-0.6387 -1.122474,-1.1229 -1.122474,-2.9433 0,-4.0664 0.549633,-0.5497 1.296921,-0.8531 2.074219,-0.8418 0.748046,0.011 1.463238,0.3128 1.992187,0.8418 0.575137,0.5774 0.801938,1.3872 0.78125,1.793 l -0.06055,5.375 h 1.28125 l 0.0098,0.01 h 2.255859 l 0.742188,-2.0039 -2.1875,-0.01 c -0.007,-1.4735 -0.0096,-3.1809 0.01758,-3.8457 0.04533,-1.1075 -0.07231,-2.1192 -1.083984,-3.1328 -1.030141,-1. 0302 -2.401567,-1.5255 -3.804671,-1.5255 -0.827556,0 -1.682166,0.2015 -2.449219,0.5664 -0.120502,-1.5578 -0.821911,-2.8509 -1.761718,-3.6699 -1.8688321,-1.6285 -2.9841577,-1.7166 -4.7558596,-1.6914 z m 0.3378908,8.8828 -1.8945312,5.0098 1.8515623,1.2656 1.8203124,-4.7715 z" fill="white" fill-opacity="0.8" /> +</svg> Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-blocked-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-blocked-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-cancelled-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-cancelled-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-execution-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-execution-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-failed-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-failed-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-not_complete-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-not_complete-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-passed-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-passed-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-scheduled-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-scheduled-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/logo-softfailed-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/logo-softfailed-16.png differ Binary files old/openQA-5.1771942065.808b073f/assets/images/terminal-16.png and new/openQA-5.1772031289.93bc2a13/assets/images/terminal-16.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/container/helm/ct.yaml new/openQA-5.1772031289.93bc2a13/container/helm/ct.yaml --- old/openQA-5.1771942065.808b073f/container/helm/ct.yaml 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/container/helm/ct.yaml 2026-02-25 15:54:49.000000000 +0100 @@ -5,3 +5,4 @@ chart-repos: - bitnami=https://charts.bitnami.com/bitnami validate-maintainers: false +kubectl-timeout: "500s" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/docs/Installing.asciidoc new/openQA-5.1772031289.93bc2a13/docs/Installing.asciidoc --- old/openQA-5.1771942065.808b073f/docs/Installing.asciidoc 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/docs/Installing.asciidoc 2026-02-25 15:54:49.000000000 +0100 @@ -273,6 +273,47 @@ systemd-run -tM openqa1 /bin/bash # start a shell in the container ------------------------------------------------------------------------------- +=== openQA in a virtual machine + +You can also set up a ready-to-use **openQA** instance as a virtual machine +in your computer. + +The images are available directly from the https://openqa.opensuse.org[o3] site. +Download the HDD image `opensuse-Tumbleweed-x86_64@uefi-4G-<...>.qcow2` (~3.2 GB) +from the _Assets_ in the test scenario https://openqa.opensuse.org/tests/latest?arch=x86_64&distri=openqa&flavor=dev&machine=uefi-4G&test=openqa_install%2Bpublish&version=Tumbleweed#downloads[openqa_install+publish]. + +==== The VM + +The downloaded image can be used to launch a local VM from, running the +_openSUSE Tumbleweed_ system, a graphical user interface and a network access +to your local machine's networks. + +Upon starting the VM, you can login as the root user. The login credentials +are available on https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/lib/main_common.pm[os-autoinst-distri-opensuse] by searching for `$testapi::password`. + +You can also access the VM via SSH from a console on your machine +(`ssh root@<VM_IP_ADDRESS>`), after properly configuring `ssh` in the VM and +your computer. + +==== The openQA instance + +The system features a pre-configured **openQA** instance, which includes the +web UI at http://localhost/, a worker, and a PostgreSQL database. To check the +services, run on a VM terminal: `systemctl status openqa-* openqa-worker@1 +postgresql` + +You can access the web UI via the Firefox browser within the VM's graphical +environment and log in as the default openQA Demo user. +Once you have the VM's IP address, you can also access the web UI from any +browser on your machine by navigating to http://<VM_IP>/. + +The drop-down menu in the UI top-left corner allows you to open an _Example test_ +page, to run a simple test and verify the setup. + +Other tests can be cloned via the VM console or an SSH session from your machine, +using `openqa-clone-job`, getting the job settings from o3 and instantiating +the test execution on the local VM instance (`--from openqa.opensuse.org --host +localhost`; refer to the `openqa-clone-job` documentation). == Custom installation - repositories and procedure [id="custom_installation"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/lib/OpenQA/Jobs/Constants.pm new/openQA-5.1772031289.93bc2a13/lib/OpenQA/Jobs/Constants.pm --- old/openQA-5.1771942065.808b073f/lib/OpenQA/Jobs/Constants.pm 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/lib/OpenQA/Jobs/Constants.pm 2026-02-25 15:54:49.000000000 +0100 @@ -125,9 +125,12 @@ RESULT_CLEANUP_LOG_FILES => COMMON_RESULT_LOG_FILES, qw(serial0.txt serial_terminal.txt serial_terminal_user.txt video_time.vtt); -# defaults for new jobs that are useful outside the schema +# default for new jobs that are useful outside the schema use constant DEFAULT_JOB_PRIORITY => 50; +# priority for status aggregation (worst result first) +use constant STATUS_PRIORITY => (FAILED, NOT_COMPLETE, SOFTFAILED, ABORTED, RUNNING, SCHEDULED, NONE); + # the "column" to query for a tag ID in accordance with parse_tags_from_comments() and _important_builds() use constant TAG_ID_COLUMN => "concat(VERSION, '-', BUILD)"; @@ -183,6 +186,7 @@ DEFAULT_JOB_PRIORITY RESULT_CLEANUP_LOG_FILES TAG_ID_COLUMN + STATUS_PRIORITY ); # mapping from any specific job state/result to a meta state/result diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/lib/OpenQA/Schema/Result/ScheduledProducts.pm new/openQA-5.1772031289.93bc2a13/lib/OpenQA/Schema/Result/ScheduledProducts.pm --- old/openQA-5.1771942065.808b073f/lib/OpenQA/Schema/Result/ScheduledProducts.pm 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/lib/OpenQA/Schema/Result/ScheduledProducts.pm 2026-02-25 15:54:49.000000000 +0100 @@ -6,7 +6,6 @@ ## no critic (OpenQA::RedundantStrictWarning) use Mojo::Base 'DBIx::Class::Core', -signatures; -use Mojo::Base -base, -signatures; use DBIx::Class::Timestamps 'now'; use Exporter 'import'; use File::Basename; @@ -26,9 +25,7 @@ use constant { ADDED => 'added', # no jobs have been created yet SCHEDULING => 'scheduling', # jobs are being created - SCHEDULED => 'scheduled', # all jobs have been created CANCELLING => 'cancelling', # jobs are being cancelled (so far only possible as reaction to webhook event) - CANCELLED => 'cancelled', # all jobs have been cancelled (so far only possible as reaction to webhook event) }; __PACKAGE__->table('scheduled_products'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/lib/OpenQA/WebAPI/Controller/Test.pm new/openQA-5.1772031289.93bc2a13/lib/OpenQA/WebAPI/Controller/Test.pm --- old/openQA-5.1771942065.808b073f/lib/OpenQA/WebAPI/Controller/Test.pm 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/lib/OpenQA/WebAPI/Controller/Test.pm 2026-02-25 15:54:49.000000000 +0100 @@ -18,7 +18,7 @@ use File::Basename; use POSIX 'strftime'; use Mojo::JSON qw(to_json decode_json); -use List::Util qw(min); +use List::Util qw(first min); use constant DEPENDENCY_DEBUG_INFO => $ENV{OPENQA_DEPENDENCY_DEBUG_INFO}; @@ -872,6 +872,9 @@ my $jobs = $jobs_rs->latest_jobs_from_ids($latest_job_ids, $limit); my ($archs, $results, $aggregated, $job_ids) = $self->_prepare_job_results($jobs, $latest_job_ids); + my %counts = (%$aggregated, failed => $aggregated->{failed} || ($aggregated->{unknown} // 0)); + my $aggregate_status = (first { $counts{$_} } STATUS_PRIORITY) // 'passed'; + # determine distri/version from job results if not explicitly specified via search args my @distris = keys %$results; my $formatted_distri; @@ -911,6 +914,7 @@ archs => $archs, results => $results, aggregated => $aggregated, + aggregate_status => $aggregate_status, job_ids => $job_ids, until => $search_args->{until}, parallel_children_collapsable_results_sel => $config->{global}->{parallel_children_collapsable_results_sel}, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/lib/OpenQA/WebAPI/Plugin/Helpers.pm new/openQA-5.1772031289.93bc2a13/lib/OpenQA/WebAPI/Plugin/Helpers.pm --- old/openQA-5.1771942065.808b073f/lib/OpenQA/WebAPI/Plugin/Helpers.pm 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/lib/OpenQA/WebAPI/Plugin/Helpers.pm 2026-02-25 15:54:49.000000000 +0100 @@ -137,9 +137,14 @@ $app->helper( favicon_url => sub ($c, $suffix) { - return $c->icon_url("logo$suffix") unless my $job = $c->stash('job'); - my $status = $job->status; - return $c->icon_url("logo-$status$suffix"); + if (my $job = $c->stash('job')) { + my $status = $job->status; + return $c->icon_url("logo-$status$suffix"); + } + if (my $agg_status = $c->stash('aggregate_status')) { + return $c->icon_url("logo-aggregate-$agg_status$suffix") if $agg_status ne 'none'; + } + return $c->icon_url("logo$suffix"); }); $app->helper( Binary files old/openQA-5.1771942065.808b073f/public/favicon.ico and new/openQA-5.1772031289.93bc2a13/public/favicon.ico differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/t/03-auth.t new/openQA-5.1772031289.93bc2a13/t/03-auth.t --- old/openQA-5.1771942065.808b073f/t/03-auth.t 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/t/03-auth.t 2026-02-25 15:54:49.000000000 +0100 @@ -23,6 +23,13 @@ $file_api_mock->redefine(download_asset => sub ($self) { $self->render(text => 'asset-ok') }); $file_api_mock->redefine(test_asset => sub ($self) { $self->redirect_to('/assets/iso/test.iso') }); +# Mock assets to avoid "Too many open files" errors due to multiple app startups +my $assets_mock = Test::MockModule->new('OpenQA::Assets'); +$assets_mock->redefine( + setup => sub ($server) { + $server->helper(asset => sub { '/dummy' }); + }); + my $tempdir = tempdir("$FindBin::Script-XXXX", TMPDIR => 1); $ENV{OPENQA_CONFIG} = $tempdir; OpenQA::Test::Database->new->create; @@ -31,6 +38,7 @@ my @conf = ("[auth]\n", "method = \t $auth \t\n"); $tempdir->child('openqa.ini')->spew(join('', @conf, @options, "[openid]\n", "httpsonly = 0\n")); my $t = Test::Mojo->new('OpenQA::WebAPI'); + $t->app->helper(icon_url => sub { '/favicon.ico' }); is $t->app->config->{auth}->{method}, $auth, "started successfully with auth $auth"; $t->get_ok('/login' => {Referer => 'http://open.qa/tests/42'}); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/t/10-tests_overview.t new/openQA-5.1772031289.93bc2a13/t/10-tests_overview.t --- old/openQA-5.1771942065.808b073f/t/10-tests_overview.t 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/t/10-tests_overview.t 2026-02-25 15:54:49.000000000 +0100 @@ -22,6 +22,25 @@ sub get_summary { OpenQA::Test::Case::trim_whitespace($t->tx->res->dom->at('#summary')->all_text) } my $jobs = $schema->resultset('Jobs'); + +sub create_job { + my %args = @_; + return $jobs->create( + { + group_id => 1001, + priority => 50, + state => 'done', + BUILD => '0001', + ARCH => 'x86_64', + MACHINE => '64bit', + DISTRI => 'opensuse', + VERSION => '13.1', + FLAVOR => 'DVD', + TEST => 'test', + %args, + }); +} + $jobs->find(99928)->update({blocked_by_id => 99927}); $jobs->find($_)->comments->create({text => 'foobar', user_id => 99901}) for 99946, 99963; $t->get_ok('/tests/overview' => form => {distri => 'opensuse', version => '13.1', build => '0091'})->status_is(200); @@ -178,6 +197,36 @@ $t->element_exists('#res_DVD_x86_64_doc .result_failed'); $t->element_exists_not('#res_DVD_x86_64_kde .result_passed'); +subtest 'summary card border' => sub { + # Create a job that is softfailed + my $softfailed_job = create_job( + result => OpenQA::Jobs::Constants::SOFTFAILED, + TEST => 'softfailed_test', + VERSION => 'SoftFailVersion', + DISTRI => 'softfail_distri', + ); + + $t->get_ok('/tests/overview' => form => {distri => 'softfail_distri', version => 'SoftFailVersion'}) + ->status_is(200); + $t->element_exists('#summary.border-success', 'softfailed results in border-success'); + $t->element_exists_not('#summary.border-danger', 'softfailed does NOT result in border-danger'); + + # Add a failed job to the same distri/version to see it change to border-danger + my $failed_job = create_job( + result => OpenQA::Jobs::Constants::FAILED, + TEST => 'failed_test', + VERSION => 'SoftFailVersion', + DISTRI => 'softfail_distri', + ); + + $t->get_ok('/tests/overview' => form => {distri => 'softfail_distri', version => 'SoftFailVersion'}) + ->status_is(200); + $t->element_exists('#summary.border-danger', 'failed + softfailed results in border-danger'); + + $softfailed_job->delete(); + $failed_job->delete(); +}; + subtest 'clickable summary buttons' => sub { $t->get_ok('/tests/overview' => form => {distri => 'opensuse', version => 'Factory', build => '0048'}) ->status_is(200); @@ -207,17 +256,13 @@ subtest 'todo-flag on test overview' => sub { $schema->txn_begin; - $jobs->create( - { - id => 99964, - BUILD => '0048', - group_id => 1001, - TEST => 'server_client_parallel', - DISTRI => 'opensuse', - VERSION => 'Factory', - state => 'done', - result => 'parallel_failed', - }); + create_job( + id => 99964, + BUILD => '0048', + TEST => 'server_client_parallel', + VERSION => 'Factory', + result => 'parallel_failed', + ); $form = {distri => 'opensuse', version => 'Factory', build => '0048', todo => 1}; $t->get_ok('/tests/overview' => form => $form)->status_is(200); like get_summary, qr/current time Failed: 1/i, 'todo=1 shows only unlabeled left failed'; @@ -281,15 +326,13 @@ name => 'opensuse test 2' }); -my $job = $jobs->create( - { - id => 99964, - BUILD => '0092', - group_id => 1003, - TEST => 'kde', - DISTRI => 'opensuse', - VERSION => '13.1' - }); +my $job = create_job( + id => 99964, + BUILD => '0092', + group_id => 1003, + TEST => 'kde', + state => 'scheduled', +); $t->get_ok('/tests/overview?distri=opensuse&version=13.1&groupid=1001&groupid=1003')->status_is(200); $summary = get_summary; @@ -482,4 +525,20 @@ ->element_count_is('table.overview td.name', 0); }; +subtest 'aggregate favicon' => sub { + $t->get_ok('/tests/overview' => form => {distri => 'opensuse', version => '13.1', build => '0091'})->status_is(200); + $t->element_exists('link#favicon-16[href*="logo-aggregate-running-16.png"]'); + $t->element_exists('link#favicon-svg[href*="logo-aggregate-running.svg"]'); + + $t->get_ok('/tests/overview' => form => {distri => 'opensuse', version => 'Factory', build => '0048'}) + ->status_is(200); + $t->element_exists('link#favicon-16[href*="logo-aggregate-failed-16.png"]'); + $t->element_exists('link#favicon-svg[href*="logo-aggregate-failed.svg"]'); + + $t->get_ok('/tests/overview' => form => {distri => 'opensuse', version => '13.1', result => 'passed'}) + ->status_is(200); + $t->element_exists('link#favicon-16[href*="logo-aggregate-passed-16.png"]'); + $t->element_exists('link#favicon-svg[href*="logo-aggregate-passed.svg"]'); +}; + done_testing(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/t/ui/10-tests_overview.t new/openQA-5.1772031289.93bc2a13/t/ui/10-tests_overview.t --- old/openQA-5.1771942065.808b073f/t/ui/10-tests_overview.t 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/t/ui/10-tests_overview.t 2026-02-25 15:54:49.000000000 +0100 @@ -850,6 +850,12 @@ like $driver->get_current_url, qr/result__not=passed/, 'URL contains result__not=passed'; }; +subtest 'aggregate favicon' => sub { + $driver->get($baseurl . 'tests/overview?distri=opensuse&version=13.1&build=0091'); + my $favicon_16 = $driver->find_element('#favicon-16', 'css'); + like $favicon_16->get_attribute('href'), qr/logo-aggregate-failed-16\.png/, 'favicon correctly set to failed'; +}; + subtest 'meta-checkboxes are ignored by bulk operations' => sub { $driver->get('/tests/overview'); $driver->find_element('#filter-panel .card-header')->click(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1771942065.808b073f/templates/webapi/test/overview.html.ep new/openQA-5.1772031289.93bc2a13/templates/webapi/test/overview.html.ep --- old/openQA-5.1771942065.808b073f/templates/webapi/test/overview.html.ep 2026-02-24 15:07:45.000000000 +0100 +++ new/openQA-5.1772031289.93bc2a13/templates/webapi/test/overview.html.ep 2026-02-25 15:54:49.000000000 +0100 @@ -16,7 +16,7 @@ % } <div> <h2>Test result overview</h2> - <div id="summary" class="card <%= ($aggregated->{failed} + $aggregated->{not_complete}) ? 'border-danger' : 'border-success' %>"> + <div id="summary" class="card <%= ($aggregate_status =~ /^(?:failed|not_complete)$/) ? 'border-danger' : 'border-success' %>"> <div class="card-header"> Overall Summary of % if (@$summary_parts) { ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.FulGyX/_old 2026-02-26 18:52:23.074854621 +0100 +++ /var/tmp/diff_new_pack.FulGyX/_new 2026-02-26 18:52:23.078854788 +0100 @@ -1,5 +1,5 @@ name: openQA -version: 5.1771942065.808b073f -mtime: 1771942065 -commit: 808b073f9b189dd237fd533a330b6fbad075580d +version: 5.1772031289.93bc2a13 +mtime: 1772031289 +commit: 93bc2a130594f802fa3c4843b4680862d01e978b
