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-11-06 19:35:31 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/openQA (Old) and /work/SRC/openSUSE:Factory/.openQA.new.3759290 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openQA" Fri Nov 6 19:35:31 2026 rev:904 rq:1395133 version:5.1793868658.dfa961c2 Changes: -------- --- /work/SRC/openSUSE:Factory/openQA/openQA.changes 2026-11-04 19:44:30.965040926 +0100 +++ /work/SRC/openSUSE:Factory/.openQA.new.3759290/openQA.changes 2026-11-06 19:38:48.638048950 +0100 @@ -1,0 +2,40 @@ +Thu Nov 05 08:54:46 UTC 2026 - [email protected] + +- Update to version 5.1793868658.dfa961c2: + * chore(deps-dev): bump eslint from 10.2.1 to 10.13.0 (#8056) + * test(devel-mode): Avoid sporadic failures when waiting for uploads + +------------------------------------------------------------------- +Wed Nov 04 16:54:18 UTC 2026 - [email protected] + +- Update to version 5.1793809764.4e765df8: + * feat(worker): Improve warning on failed health checks + +------------------------------------------------------------------- +Wed Nov 04 15:26:02 UTC 2026 - [email protected] + +- Update to version 5.1793805947.6de9429d: + * ci: Enable packaging checks for Leap 16.1 + * fix(openQA.spec): package system resources as root, not as geekotest + +------------------------------------------------------------------- +Wed Nov 04 12:43:30 UTC 2026 - [email protected] + +- Update to version 5.1793793355.58c4f04c: + * feat(investigation): Improve git diff --stat filename output + * refactor(investigation): Add an options hash to git_diff parameters + +------------------------------------------------------------------- +Wed Nov 04 07:38:15 UTC 2026 - [email protected] + +- Update to version 5.1793777871.7773352c: + * chore(deps-dev): bump @csstools/media-query-list-parser + +------------------------------------------------------------------- +Tue Nov 03 18:35:57 UTC 2026 - [email protected] + +- Update to version 5.1793730939.c4b8f9f6: + * feat: Set application name of DB connections for easier tracking + * test(api-key-ui): Fix sporadic failures + +------------------------------------------------------------------- Old: ---- openQA-5.1793722468.aa0c30fc.obscpio New: ---- openQA-5.1793868658.dfa961c2.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ openQA-client-test.spec ++++++ --- /var/tmp/diff_new_pack.8t1dsk/_old 2026-11-06 19:38:51.606173104 +0100 +++ /var/tmp/diff_new_pack.8t1dsk/_new 2026-11-06 19:38:51.608173188 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-client Name: %{short_name}-test -Version: 5.1793722468.aa0c30fc +Version: 5.1793868658.dfa961c2 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA-test.spec ++++++ --- /var/tmp/diff_new_pack.8t1dsk/_old 2026-11-06 19:38:51.696176869 +0100 +++ /var/tmp/diff_new_pack.8t1dsk/_new 2026-11-06 19:38:51.701177078 +0100 @@ -18,7 +18,7 @@ %define short_name openQA Name: %{short_name}-test -Version: 5.1793722468.aa0c30fc +Version: 5.1793868658.dfa961c2 Release: 0 Summary: Test package for openQA License: GPL-2.0-or-later ++++++ openQA-worker-test.spec ++++++ --- /var/tmp/diff_new_pack.8t1dsk/_old 2026-11-06 19:38:51.789180759 +0100 +++ /var/tmp/diff_new_pack.8t1dsk/_new 2026-11-06 19:38:51.791180843 +0100 @@ -18,7 +18,7 @@ %define short_name openQA-worker Name: %{short_name}-test -Version: 5.1793722468.aa0c30fc +Version: 5.1793868658.dfa961c2 Release: 0 Summary: Test package for %{short_name} License: GPL-2.0-or-later ++++++ openQA.spec ++++++ --- /var/tmp/diff_new_pack.8t1dsk/_old 2026-11-06 19:38:51.892185068 +0100 +++ /var/tmp/diff_new_pack.8t1dsk/_new 2026-11-06 19:38:51.894185151 +0100 @@ -104,7 +104,7 @@ %define devel_requires %devel_no_selenium_requires chromedriver Name: openQA -Version: 5.1793722468.aa0c30fc +Version: 5.1793868658.dfa961c2 Release: 0 Summary: Framework for automated system-level testing (web-frontend, scheduler and tools) Group: Development/Tools/Other @@ -734,6 +734,9 @@ %{_datadir}/openqa/script/openqa-webui-daemon %{_datadir}/openqa/script/upgradedb %{_datadir}/openqa/script/modify_needle +%if 0%{?suse_version} > 1500 +%{_sysusersdir}/geekotest.conf +%endif # TODO: define final user %defattr(-,geekotest,root) # attention: never package subdirectories owned by a user other @@ -751,9 +754,6 @@ %dir %{_localstatedir}/lib/openqa/share/factory/repo %dir %{_localstatedir}/lib/openqa/share/factory/other %ghost %{_localstatedir}/log/openqa -%if 0%{?suse_version} > 1500 -%{_sysusersdir}/geekotest.conf -%endif %if %{with devel_package} %files devel @@ -840,17 +840,17 @@ %{_datadir}/openqa/script/openqa-workercache-daemon %{_datadir}/openqa/script/openqa-worker-cacheservice-minion %dir %{_localstatedir}/lib/openqa/pool -%defattr(-,_openqa-worker,root) -%dir %{_localstatedir}/lib/openqa/cache -%dir %{_localstatedir}/lib/openqa/cache/podman -# own one pool - to create the others is task of the admin -%dir %{_localstatedir}/lib/openqa/pool/1 %if 0%{?suse_version} > 1500 %{_sysusersdir}/%{name}-worker.conf %endif %if 0%{?suse_version} <= 1560 %{_prefix}/lib/sysctl.d/01-openqa-reload-worker-auto-restart.conf %endif +%defattr(-,_openqa-worker,root) +%dir %{_localstatedir}/lib/openqa/cache +%dir %{_localstatedir}/lib/openqa/cache/podman +# own one pool - to create the others is task of the admin +%dir %{_localstatedir}/lib/openqa/pool/1 %files client %dir %{_datadir}/openqa ++++++ node_modules.obscpio ++++++ Binary files old/@csstools-media-query-list-parser-5.0.0.tgz and new/@csstools-media-query-list-parser-5.0.0.tgz differ Binary files old/@csstools-media-query-list-parser-5.0.2.tgz and new/@csstools-media-query-list-parser-5.0.2.tgz differ Binary files old/@eslint-config-helpers-0.5.5.tgz and new/@eslint-config-helpers-0.5.5.tgz differ Binary files old/@eslint-config-helpers-0.7.0.tgz and new/@eslint-config-helpers-0.7.0.tgz differ Binary files old/@eslint-plugin-kit-0.7.2.tgz and new/@eslint-plugin-kit-0.7.2.tgz differ Binary files old/@eslint-plugin-kit-0.7.3.tgz and new/@eslint-plugin-kit-0.7.3.tgz differ Binary files old/eslint-10.13.0.tgz and new/eslint-10.13.0.tgz differ Binary files old/eslint-10.2.1.tgz and new/eslint-10.2.1.tgz differ Binary files old/file-entry-cache-8.0.0.tgz and new/file-entry-cache-8.0.0.tgz differ Binary files old/flat-cache-4.0.1.tgz and new/flat-cache-4.0.1.tgz differ Binary files old/flatted-3.4.2.tgz and new/flatted-3.4.2.tgz differ Binary files old/flatted-3.4.4.tgz and new/flatted-3.4.4.tgz differ Binary files old/json-buffer-3.0.1.tgz and new/json-buffer-3.0.1.tgz differ Binary files old/keyv-4.5.4.tgz and new/keyv-4.5.4.tgz differ ++++++ node_modules.spec.inc ++++++ --- /var/tmp/diff_new_pack.8t1dsk/_old 2026-11-06 19:38:53.954271323 +0100 +++ /var/tmp/diff_new_pack.8t1dsk/_new 2026-11-06 19:38:53.964271741 +0100 @@ -6,17 +6,17 @@ Source1005: https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.2.tgz#/@csstools-css-parser-algorithms-4.0.2.tgz Source1006: https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.15.tgz#/@csstools-css-syntax-patches-for-csstree-1.1.15.tgz Source1007: https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.2.tgz#/@csstools-css-tokenizer-4.0.2.tgz -Source1008: https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz#/@csstools-media-query-list-parser-5.0.0.tgz +Source1008: https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.2.tgz#/@csstools-media-query-list-parser-5.0.2.tgz Source1009: https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-4.0.2.tgz#/@csstools-selector-resolve-nested-4.0.2.tgz Source1010: https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-6.0.0.tgz#/@csstools-selector-specificity-6.0.0.tgz Source1011: https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz#/@eslint-community-eslint-utils-4.10.1.tgz Source1012: https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz#/@eslint-community-regexpp-4.12.2.tgz Source1013: https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz#/@eslint-config-array-0.23.5.tgz -Source1014: https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz#/@eslint-config-helpers-0.5.5.tgz +Source1014: https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz#/@eslint-config-helpers-0.7.0.tgz Source1015: https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz#/@eslint-core-1.2.1.tgz Source1016: https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz#/@eslint-js-10.0.1.tgz Source1017: https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz#/@eslint-object-schema-3.0.5.tgz -Source1018: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz#/@eslint-plugin-kit-0.7.2.tgz +Source1018: https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.3.tgz#/@eslint-plugin-kit-0.7.3.tgz Source1019: https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.7.2.tgz#/@fortawesome-fontawesome-free-6.7.2.tgz Source1020: https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz#/@humanfs-core-0.19.2.tgz Source1021: https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz#/@humanfs-node-0.16.8.tgz @@ -104,7 +104,7 @@ Source1103: https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz#/env-paths-2.2.1.tgz Source1104: https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz#/error-ex-1.3.4.tgz Source1105: https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#/escape-string-regexp-4.0.0.tgz -Source1106: https://registry.npmjs.org/eslint/-/eslint-10.2.1.tgz#/eslint-10.2.1.tgz +Source1106: https://registry.npmjs.org/eslint/-/eslint-10.13.0.tgz#/eslint-10.13.0.tgz Source1107: https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz#/eslint-config-prettier-10.1.8.tgz Source1108: https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz#/eslint-plugin-prettier-5.5.5.tgz Source1109: https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz#/eslint-scope-9.1.2.tgz @@ -124,133 +124,129 @@ Source1123: https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#/fastest-levenshtein-1.0.16.tgz Source1124: https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz#/fastq-1.20.3.tgz Source1125: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz#/file-entry-cache-11.1.5.tgz -Source1126: https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz#/file-entry-cache-8.0.0.tgz -Source1127: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#/fill-range-7.1.1.tgz -Source1128: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz -Source1129: https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz#/flat-cache-4.0.1.tgz -Source1130: https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz#/flat-cache-6.1.23.tgz -Source1131: https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz#/flatted-3.4.2.tgz -Source1132: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz#/get-east-asian-width-1.6.0.tgz -Source1133: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz -Source1134: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz -Source1135: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz -Source1136: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz -Source1137: https://registry.npmjs.org/globals/-/globals-17.13.0.tgz#/globals-17.13.0.tgz -Source1138: https://registry.npmjs.org/globby/-/globby-16.2.4.tgz#/globby-16.2.4.tgz -Source1139: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz -Source1140: https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz#/graphlib-2.1.8.tgz -Source1141: https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz#/has-flag-5.0.1.tgz -Source1142: https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz#/hashery-1.5.1.tgz -Source1143: https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz#/hookified-1.15.1.tgz -Source1144: https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz#/hookified-2.2.0.tgz -Source1145: https://registry.npmjs.org/html-tags/-/html-tags-5.1.0.tgz#/html-tags-5.1.0.tgz -Source1146: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz -Source1147: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#/ignore-5.3.2.tgz -Source1148: https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz#/ignore-7.0.12.tgz -Source1149: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz#/ignore-7.0.5.tgz -Source1150: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz#/import-fresh-3.3.1.tgz -Source1151: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz#/import-meta-resolve-4.2.0.tgz -Source1152: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz -Source1153: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz -Source1154: https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz#/internmap-2.0.3.tgz -Source1155: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz -Source1156: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz -Source1157: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz -Source1158: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz -Source1159: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz -Source1160: https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz#/is-path-inside-4.0.0.tgz -Source1161: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz -Source1162: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz -Source1163: https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz#/jquery-3.7.1.tgz -Source1164: https://registry.npmjs.org/jquery/-/jquery-4.0.0.tgz#/jquery-4.0.0.tgz -Source1165: https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.2.3.tgz#/jquery-ujs-1.2.3.tgz -Source1166: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz -Source1167: https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz#/js-yaml-4.3.2.tgz -Source1168: https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz#/json-buffer-3.0.1.tgz -Source1169: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz -Source1170: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz -Source1171: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz -Source1172: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz -Source1173: https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#/keyv-4.5.4.tgz -Source1174: https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz#/keyv-5.6.0.tgz -Source1175: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz -Source1176: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz#/known-css-properties-0.37.0.tgz -Source1177: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz -Source1178: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz -Source1179: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz -Source1180: https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz#/lodash-4.18.1.tgz -Source1181: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz -Source1182: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz#/mathml-tag-names-4.0.0.tgz -Source1183: https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz#/mdn-data-2.27.1.tgz -Source1184: https://registry.npmjs.org/meow/-/meow-14.1.0.tgz#/meow-14.1.0.tgz -Source1185: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz -Source1186: https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#/micromatch-4.0.8.tgz -Source1187: https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz#/minimatch-10.2.4.tgz -Source1188: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#/ms-2.1.3.tgz -Source1189: https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz#/nanoid-3.3.20.tgz -Source1190: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz -Source1191: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz -Source1192: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz -Source1193: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz -Source1194: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz -Source1195: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz -Source1196: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz -Source1197: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz -Source1198: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz -Source1199: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#/picocolors-1.1.1.tgz -Source1200: https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz#/picomatch-2.3.2.tgz -Source1201: https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz#/postcss-8.5.30.tgz -Source1202: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz -Source1203: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz#/postcss-resolve-nested-selector-0.1.6.tgz -Source1204: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.1.0.tgz#/postcss-safe-parser-7.1.0.tgz -Source1205: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz -Source1206: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz#/postcss-selector-parser-7.1.6.tgz -Source1207: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz -Source1208: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz -Source1209: https://registry.npmjs.org/prettier/-/prettier-3.9.10.tgz#/prettier-3.9.10.tgz -Source1210: https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz#/prettier-linter-helpers-1.0.1.tgz -Source1211: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz -Source1212: https://registry.npmjs.org/qified/-/qified-0.10.1.tgz#/qified-0.10.1.tgz -Source1213: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz -Source1214: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz -Source1215: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz -Source1216: https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz#/reusify-1.1.0.tgz -Source1217: https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz#/robust-predicates-3.0.3.tgz -Source1218: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz -Source1219: https://registry.npmjs.org/rw/-/rw-1.3.3.tgz#/rw-1.3.3.tgz -Source1220: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz -Source1221: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz -Source1222: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz -Source1223: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz -Source1224: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz#/slash-5.1.0.tgz -Source1225: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz -Source1226: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz#/source-map-js-1.2.2.tgz -Source1227: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz -Source1228: https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz#/string-width-8.2.2.tgz -Source1229: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz -Source1230: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz#/strip-ansi-7.2.0.tgz -Source1231: https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz#/style-search-0.1.0.tgz -Source1232: https://registry.npmjs.org/stylelint/-/stylelint-17.16.0.tgz#/stylelint-17.16.0.tgz -Source1233: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-18.0.0.tgz#/stylelint-config-recommended-18.0.0.tgz -Source1234: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-17.0.1.tgz#/stylelint-config-recommended-scss-17.0.1.tgz -Source1235: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-40.0.0.tgz#/stylelint-config-standard-40.0.0.tgz -Source1236: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-17.0.0.tgz#/stylelint-config-standard-scss-17.0.0.tgz -Source1237: https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-5.0.3.tgz#/stylelint-prettier-5.0.3.tgz -Source1238: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-7.0.0.tgz#/stylelint-scss-7.0.0.tgz -Source1239: https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz#/supports-color-10.2.2.tgz -Source1240: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.5.0.tgz#/supports-hyperlinks-4.5.0.tgz -Source1241: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz -Source1242: https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz#/synckit-0.11.13.tgz -Source1243: https://registry.npmjs.org/table/-/table-6.9.0.tgz#/table-6.9.0.tgz -Source1244: https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz#/timeago.js-4.0.2.tgz -Source1245: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz -Source1246: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz -Source1247: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.1.tgz#/unicorn-magic-0.4.1.tgz -Source1248: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz -Source1249: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz -Source1250: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz -Source1251: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz -Source1252: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz -Source1253: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz#/write-file-atomic-7.0.1.tgz -Source1254: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz +Source1126: https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz#/fill-range-7.1.1.tgz +Source1127: https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz#/find-up-5.0.0.tgz +Source1128: https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz#/flat-cache-6.1.23.tgz +Source1129: https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz#/flatted-3.4.4.tgz +Source1130: https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.6.0.tgz#/get-east-asian-width-1.6.0.tgz +Source1131: https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#/glob-parent-5.1.2.tgz +Source1132: https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz#/glob-parent-6.0.2.tgz +Source1133: https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz#/global-modules-2.0.0.tgz +Source1134: https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz#/global-prefix-3.0.0.tgz +Source1135: https://registry.npmjs.org/globals/-/globals-17.13.0.tgz#/globals-17.13.0.tgz +Source1136: https://registry.npmjs.org/globby/-/globby-16.2.4.tgz#/globby-16.2.4.tgz +Source1137: https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz#/globjoin-0.1.4.tgz +Source1138: https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz#/graphlib-2.1.8.tgz +Source1139: https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz#/has-flag-5.0.1.tgz +Source1140: https://registry.npmjs.org/hashery/-/hashery-1.5.1.tgz#/hashery-1.5.1.tgz +Source1141: https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz#/hookified-1.15.1.tgz +Source1142: https://registry.npmjs.org/hookified/-/hookified-2.2.0.tgz#/hookified-2.2.0.tgz +Source1143: https://registry.npmjs.org/html-tags/-/html-tags-5.1.0.tgz#/html-tags-5.1.0.tgz +Source1144: https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz#/iconv-lite-0.6.3.tgz +Source1145: https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz#/ignore-5.3.2.tgz +Source1146: https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz#/ignore-7.0.12.tgz +Source1147: https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz#/ignore-7.0.5.tgz +Source1148: https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz#/import-fresh-3.3.1.tgz +Source1149: https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz#/import-meta-resolve-4.2.0.tgz +Source1150: https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz#/imurmurhash-0.1.4.tgz +Source1151: https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#/ini-1.3.8.tgz +Source1152: https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz#/internmap-2.0.3.tgz +Source1153: https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz#/is-arrayish-0.2.1.tgz +Source1154: https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz#/is-extglob-2.1.1.tgz +Source1155: https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#/is-fullwidth-code-point-3.0.0.tgz +Source1156: https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz#/is-glob-4.0.3.tgz +Source1157: https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz#/is-number-7.0.0.tgz +Source1158: https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz#/is-path-inside-4.0.0.tgz +Source1159: https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz#/is-plain-object-5.0.0.tgz +Source1160: https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#/isexe-2.0.0.tgz +Source1161: https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz#/jquery-3.7.1.tgz +Source1162: https://registry.npmjs.org/jquery/-/jquery-4.0.0.tgz#/jquery-4.0.0.tgz +Source1163: https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.2.3.tgz#/jquery-ujs-1.2.3.tgz +Source1164: https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz#/js-tokens-4.0.0.tgz +Source1165: https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz#/js-yaml-4.3.2.tgz +Source1166: https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#/json-parse-even-better-errors-2.3.1.tgz +Source1167: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#/json-schema-traverse-0.4.1.tgz +Source1168: https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#/json-schema-traverse-1.0.0.tgz +Source1169: https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#/json-stable-stringify-without-jsonify-1.0.1.tgz +Source1170: https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz#/keyv-5.6.0.tgz +Source1171: https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz#/kind-of-6.0.3.tgz +Source1172: https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz#/known-css-properties-0.37.0.tgz +Source1173: https://registry.npmjs.org/levn/-/levn-0.4.1.tgz#/levn-0.4.1.tgz +Source1174: https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#/lines-and-columns-1.2.4.tgz +Source1175: https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#/locate-path-6.0.0.tgz +Source1176: https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz#/lodash-4.18.1.tgz +Source1177: https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz#/lodash.truncate-4.4.2.tgz +Source1178: https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-4.0.0.tgz#/mathml-tag-names-4.0.0.tgz +Source1179: https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz#/mdn-data-2.27.1.tgz +Source1180: https://registry.npmjs.org/meow/-/meow-14.1.0.tgz#/meow-14.1.0.tgz +Source1181: https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#/merge2-1.4.1.tgz +Source1182: https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz#/micromatch-4.0.8.tgz +Source1183: https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz#/minimatch-10.2.4.tgz +Source1184: https://registry.npmjs.org/ms/-/ms-2.1.3.tgz#/ms-2.1.3.tgz +Source1185: https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz#/nanoid-3.3.20.tgz +Source1186: https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz#/natural-compare-1.4.0.tgz +Source1187: https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#/normalize-path-3.0.0.tgz +Source1188: https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz#/optionator-0.9.4.tgz +Source1189: https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz#/p-limit-3.1.0.tgz +Source1190: https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#/p-locate-5.0.0.tgz +Source1191: https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz#/parent-module-1.0.1.tgz +Source1192: https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz#/parse-json-5.2.0.tgz +Source1193: https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz#/path-exists-4.0.0.tgz +Source1194: https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#/path-key-3.1.1.tgz +Source1195: https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz#/picocolors-1.1.1.tgz +Source1196: https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz#/picomatch-2.3.2.tgz +Source1197: https://registry.npmjs.org/postcss/-/postcss-8.5.30.tgz#/postcss-8.5.30.tgz +Source1198: https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#/postcss-media-query-parser-0.2.3.tgz +Source1199: https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz#/postcss-resolve-nested-selector-0.1.6.tgz +Source1200: https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.1.0.tgz#/postcss-safe-parser-7.1.0.tgz +Source1201: https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz#/postcss-scss-4.0.9.tgz +Source1202: https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz#/postcss-selector-parser-7.1.6.tgz +Source1203: https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#/postcss-value-parser-4.2.0.tgz +Source1204: https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#/prelude-ls-1.2.1.tgz +Source1205: https://registry.npmjs.org/prettier/-/prettier-3.9.10.tgz#/prettier-3.9.10.tgz +Source1206: https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz#/prettier-linter-helpers-1.0.1.tgz +Source1207: https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz#/punycode-2.3.1.tgz +Source1208: https://registry.npmjs.org/qified/-/qified-0.10.1.tgz#/qified-0.10.1.tgz +Source1209: https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#/queue-microtask-1.2.3.tgz +Source1210: https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz#/require-from-string-2.0.2.tgz +Source1211: https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz#/resolve-from-4.0.0.tgz +Source1212: https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz#/reusify-1.1.0.tgz +Source1213: https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz#/robust-predicates-3.0.3.tgz +Source1214: https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz#/run-parallel-1.2.0.tgz +Source1215: https://registry.npmjs.org/rw/-/rw-1.3.3.tgz#/rw-1.3.3.tgz +Source1216: https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz#/safer-buffer-2.1.2.tgz +Source1217: https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz#/shebang-command-2.0.0.tgz +Source1218: https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#/shebang-regex-3.0.0.tgz +Source1219: https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#/signal-exit-4.1.0.tgz +Source1220: https://registry.npmjs.org/slash/-/slash-5.1.0.tgz#/slash-5.1.0.tgz +Source1221: https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz#/slice-ansi-4.0.0.tgz +Source1222: https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz#/source-map-js-1.2.2.tgz +Source1223: https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#/string-width-4.2.3.tgz +Source1224: https://registry.npmjs.org/string-width/-/string-width-8.2.2.tgz#/string-width-8.2.2.tgz +Source1225: https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz#/strip-ansi-6.0.1.tgz +Source1226: https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz#/strip-ansi-7.2.0.tgz +Source1227: https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz#/style-search-0.1.0.tgz +Source1228: https://registry.npmjs.org/stylelint/-/stylelint-17.16.0.tgz#/stylelint-17.16.0.tgz +Source1229: https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-18.0.0.tgz#/stylelint-config-recommended-18.0.0.tgz +Source1230: https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-17.0.1.tgz#/stylelint-config-recommended-scss-17.0.1.tgz +Source1231: https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-40.0.0.tgz#/stylelint-config-standard-40.0.0.tgz +Source1232: https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-17.0.0.tgz#/stylelint-config-standard-scss-17.0.0.tgz +Source1233: https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-5.0.3.tgz#/stylelint-prettier-5.0.3.tgz +Source1234: https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-7.0.0.tgz#/stylelint-scss-7.0.0.tgz +Source1235: https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz#/supports-color-10.2.2.tgz +Source1236: https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.5.0.tgz#/supports-hyperlinks-4.5.0.tgz +Source1237: https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz#/svg-tags-1.0.0.tgz +Source1238: https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz#/synckit-0.11.13.tgz +Source1239: https://registry.npmjs.org/table/-/table-6.9.0.tgz#/table-6.9.0.tgz +Source1240: https://registry.npmjs.org/timeago.js/-/timeago.js-4.0.2.tgz#/timeago.js-4.0.2.tgz +Source1241: https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#/to-regex-range-5.0.1.tgz +Source1242: https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz#/type-check-0.4.0.tgz +Source1243: https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.1.tgz#/unicorn-magic-0.4.1.tgz +Source1244: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz#/uri-js-4.4.1.tgz +Source1245: https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#/util-deprecate-1.0.2.tgz +Source1246: https://registry.npmjs.org/which/-/which-1.3.1.tgz#/which-1.3.1.tgz +Source1247: https://registry.npmjs.org/which/-/which-2.0.2.tgz#/which-2.0.2.tgz +Source1248: https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz#/word-wrap-1.2.5.tgz +Source1249: https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.1.tgz#/write-file-atomic-7.0.1.tgz +Source1250: https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#/yocto-queue-0.1.0.tgz ++++++ openQA-5.1793722468.aa0c30fc.obscpio -> openQA-5.1793868658.dfa961c2.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/.mergify.yml new/openQA-5.1793868658.dfa961c2/.mergify.yml --- old/openQA-5.1793722468.aa0c30fc/.mergify.yml 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/.mergify.yml 2026-11-05 09:50:58.000000000 +0100 @@ -41,7 +41,7 @@ - name: automatic merge on merge-skip-oqa-in-oqa-tests conditions: - and: *core_checks - - '#check-success>=39' + - '#check-success>=43' - label=merge-skip-oqa-in-oqa-tests - -label=merge-skip-extended-tests actions: *merge diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/.obs/workflows.yml new/openQA-5.1793868658.dfa961c2/.obs/workflows.yml --- old/openQA-5.1793722468.aa0c30fc/.obs/workflows.yml 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/.obs/workflows.yml 2026-11-05 09:50:58.000000000 +0100 @@ -31,6 +31,12 @@ target_repository: '16.0' - target_project: devel:openQA target_repository: '16.0' + - name: '16.1' + paths: + - target_project: devel:openQA:Leap:16.1 + target_repository: '16.1' + - target_project: devel:openQA + target_repository: '16.1' architectures: [ x86_64 ] filters: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/dist/rpm/openQA.spec new/openQA-5.1793868658.dfa961c2/dist/rpm/openQA.spec --- old/openQA-5.1793722468.aa0c30fc/dist/rpm/openQA.spec 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/dist/rpm/openQA.spec 2026-11-05 09:50:58.000000000 +0100 @@ -735,6 +735,9 @@ %{_datadir}/openqa/script/openqa-webui-daemon %{_datadir}/openqa/script/upgradedb %{_datadir}/openqa/script/modify_needle +%if 0%{?suse_version} > 1500 +%{_sysusersdir}/geekotest.conf +%endif # TODO: define final user %defattr(-,geekotest,root) # attention: never package subdirectories owned by a user other @@ -752,9 +755,6 @@ %dir %{_localstatedir}/lib/openqa/share/factory/repo %dir %{_localstatedir}/lib/openqa/share/factory/other %ghost %{_localstatedir}/log/openqa -%if 0%{?suse_version} > 1500 -%{_sysusersdir}/geekotest.conf -%endif %if %{with devel_package} %files devel @@ -841,17 +841,17 @@ %{_datadir}/openqa/script/openqa-workercache-daemon %{_datadir}/openqa/script/openqa-worker-cacheservice-minion %dir %{_localstatedir}/lib/openqa/pool -%defattr(-,_openqa-worker,root) -%dir %{_localstatedir}/lib/openqa/cache -%dir %{_localstatedir}/lib/openqa/cache/podman -# own one pool - to create the others is task of the admin -%dir %{_localstatedir}/lib/openqa/pool/1 %if 0%{?suse_version} > 1500 %{_sysusersdir}/%{name}-worker.conf %endif %if 0%{?suse_version} <= 1560 %{_prefix}/lib/sysctl.d/01-openqa-reload-worker-auto-restart.conf %endif +%defattr(-,_openqa-worker,root) +%dir %{_localstatedir}/lib/openqa/cache +%dir %{_localstatedir}/lib/openqa/cache/podman +# own one pool - to create the others is task of the admin +%dir %{_localstatedir}/lib/openqa/pool/1 %files client %dir %{_datadir}/openqa diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Scheduler.pm new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Scheduler.pm --- old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Scheduler.pm 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Scheduler.pm 2026-11-05 09:50:58.000000000 +0100 @@ -25,13 +25,13 @@ sub startup ($self) { $self->moniker('openqa_scheduler'); + $self->defaults(appname => 'openQA Scheduler'); # Provide help to users early to prevent failing later on misconfigurations return if $ENV{MOJO_HELP}; OpenQA::Scheduler::Client::mark_current_process_as_scheduler; $self->setup if $RUNNING; - $self->defaults(appname => 'openQA Scheduler'); # no cookies for worker, no secrets to protect $self->secrets(['nosecretshere']); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Schema/Result/Jobs.pm new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Schema/Result/Jobs.pm --- old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Schema/Result/Jobs.pm 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Schema/Result/Jobs.pm 2026-11-05 09:50:58.000000000 +0100 @@ -1950,8 +1950,10 @@ return $res->{stdout} . $res->{stderr}; } -sub git_diff ($self, $dir, $refspec_range, $limit = undef) { +sub git_diff ($self, $dir, $refspec_range, %options) { return "Invalid range $refspec_range" if $refspec_range =~ m/UNKNOWN|unreadable git hash/; + my $limit = $options{limit} // 0; + my $stat = $options{stat} // '300,200'; my $timeout = OpenQA::App->singleton->config->{global}->{job_investigate_git_timeout} // JOB_INVESTIGATE_GIT_TIMEOUT; my $cmd = ['git', '-C', $dir, 'rev-list', '--count', $refspec_range]; @@ -1969,7 +1971,7 @@ } return "Too many commits ($count) to create a diff between $refspec_range (maximum: $limit)" if $count > $limit; - $cmd = ['timeout', $timeout, 'git', '-C', $dir, 'diff', '--stat', $refspec_range]; + $cmd = ['timeout', $timeout, 'git', '-C', $dir, 'diff', "--stat=$stat", $refspec_range]; $res = run_cmd_with_log_return_error($cmd, stdout => 'trace'); $out = $res->{stdout} . $res->{stderr}; if (my $return_code = $res->{return_code}) { @@ -2022,7 +2024,7 @@ my $diff_limit = $args{git_limit} ? $args{git_limit} / 2 : undef; $inv{test_log} = $self->git_log_diff($casedir, $refspec_range, limit => $args{git_limit}); $inv{test_log} ||= 'No test changes recorded, test regression unlikely'; - $inv{test_diff_stat} = $self->git_diff($casedir, $refspec_range, $diff_limit) if $inv{test_log}; + $inv{test_diff_stat} = $self->git_diff($casedir, $refspec_range, limit => $diff_limit) if $inv{test_log}; # no need for duplicating needles git log if the git repo is the same # as for tests if ($self_vars->{TEST_GIT_HASH} ne $self_vars->{NEEDLES_GIT_HASH}) { @@ -2030,7 +2032,7 @@ my $refspec_needles_range = "$prev_vars->{NEEDLES_GIT_HASH}..$self_vars->{NEEDLES_GIT_HASH}"; $inv{needles_log} = $self->git_log_diff($needles_dir, $refspec_needles_range, limit => $args{git_limit}); $inv{needles_log} ||= 'No needle changes recorded, test regression due to needles unlikely'; - $inv{needles_diff_stat} = $self->git_diff($needles_dir, $refspec_needles_range, $diff_limit) + $inv{needles_diff_stat} = $self->git_diff($needles_dir, $refspec_needles_range, limit => $diff_limit) if $inv{needles_log}; } last; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Schema.pm new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Schema.pm --- old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Schema.pm 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Schema.pm 2026-11-05 09:50:58.000000000 +0100 @@ -63,6 +63,12 @@ my $database_config = parse_config_files_as_hash($database_config_paths); my $database_config_for_mode = $database_config ? $database_config->{$mode} : {dsn => 'DBI:Pg:dbname=openqa'}; die "Could not find database section '$mode' in @$database_config_paths\n" unless $database_config_for_mode; + my $app = OpenQA::App->singleton; + my $app_name = ($app ? $app->defaults('appname') : '') || 'openQA'; + $app_name = ";application_name='$app_name'"; + ref $database_config_for_mode eq 'HASH' + ? ($database_config_for_mode->{dsn} .= $app_name) + : ($database_config_for_mode .= $app_name); $SINGLETON = __PACKAGE__->connect($database_config_for_mode); } if (defined(my $search_path = $ENV{OPENQA_DATABASE_SEARCH_PATH})) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/WebSockets.pm new/openQA-5.1793868658.dfa961c2/lib/OpenQA/WebSockets.pm --- old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/WebSockets.pm 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/lib/OpenQA/WebSockets.pm 2026-11-05 09:50:58.000000000 +0100 @@ -17,11 +17,11 @@ sub startup ($self) { $self->moniker('openqa_websockets'); + $self->defaults(appname => 'openQA Websocket Server'); OpenQA::WebSockets::Client::mark_current_process_as_websocket_server; $self->_setup if $RUNNING; - $self->defaults(appname => 'openQA Websocket Server'); if (defined(my $max_workers = $self->config->{misc_limits}->{max_online_workers})) { # increase max connections from default of 1000 to cover configured max_online_workers my $loop = Mojo::IOLoop->singleton; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Worker/WebUIConnection.pm new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Worker/WebUIConnection.pm --- old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Worker/WebUIConnection.pm 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Worker/WebUIConnection.pm 2026-11-05 09:50:58.000000000 +0100 @@ -33,6 +33,8 @@ # the websocket connection to receive commands from the web UI and send the status (Mojo::Transaction::WebSockets instance) has 'websocket_connection'; +my $HEALTH_CHECK_WARNING = 'Worker unavailable (health check failed)'; + sub new ($class, $webui_host, $cli_options) { my $url = $webui_host !~ '/' ? Mojo::URL->new->scheme('http')->host_port($webui_host) : Mojo::URL->new($webui_host); my $ua = OpenQA::Client->new( @@ -405,6 +407,7 @@ return undef if $self->{_send_status_timer} || !$self->websocket_connection; # re-evaluate the error status after just a few seconds if the current error is ephemeral + my $worker = $self->worker; return $self->{_send_status_timer} = Mojo::IOLoop->timer( EPHEMERAL_RECHECK_INTERVAL, sub { @@ -413,13 +416,14 @@ return $self->send_status(status => $status) unless $worker->current_error; delete $self->{_send_status_timer}; $self->send_status_delayed; - }) if $self->worker->current_error_is_ephemeral; + }) if $worker->current_error_is_ephemeral; - my $status_update_interval = $self->calculate_status_update_interval; - my $webui_host = $self->webui_host; - my $reason = ($self->{_last_worker_status} // {})->{reason}; - log_warning "$reason - checking again for web UI '$webui_host' in $status_update_interval s" if $reason; - $self->{_send_status_timer} = Mojo::IOLoop->timer($status_update_interval, sub { $self->send_status }); + my $interval = $self->calculate_status_update_interval; + if (my $reason = ($self->{_last_worker_status} // {})->{reason}) { + my $for = @{$worker->settings->webui_hosts} > 1 ? sprintf(" for web UI '%s'", $self->webui_host) : ''; + log_warning "$HEALTH_CHECK_WARNING: $reason - checking again$for in $interval s"; + } + $self->{_send_status_timer} = Mojo::IOLoop->timer($interval, sub { $self->send_status }); } # send "quit" message when intentionally "going offline" so the worker is immediately considered diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Worker.pm new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Worker.pm --- old/openQA-5.1793722468.aa0c30fc/lib/OpenQA/Worker.pm 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/lib/OpenQA/Worker.pm 2026-11-05 09:50:58.000000000 +0100 @@ -904,8 +904,7 @@ return undef if !$threshold || @$load < 3; # look at the load evolution over time to react quick enough if the load # rises but accept a falling edge - return -"The average load (@$load) is exceeding the configured threshold of $threshold. The worker will temporarily not accept new jobs until the load is lower again." + return "The average load (@$load) is exceeding the configured threshold of $threshold." if max(@$load) > $threshold && ($load->[0] > $load->[1] || $load->[0] > $load->[2] || min(@$load) > $threshold); return undef; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/package-lock.json new/openQA-5.1793868658.dfa961c2/package-lock.json --- old/openQA-5.1793722468.aa0c30fc/package-lock.json 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/package-lock.json 2026-11-05 09:50:58.000000000 +0100 @@ -24,7 +24,7 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@stylistic/stylelint-plugin": "^5.0.1", - "eslint": "^10.2.1", + "eslint": "^10.13.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.5", "globals": "^17.13.0", @@ -72,33 +72,6 @@ "keyv": "^5.6.0" } }, - "node_modules/@cacheable/memory/node_modules/@keyv/bigmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", - "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "hashery": "^1.4.0", - "hookified": "^1.15.0" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "keyv": "^5.6.0" - } - }, - "node_modules/@cacheable/memory/node_modules/keyv": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", - "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.1.1" - } - }, "node_modules/@cacheable/utils": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.5.0.tgz", @@ -110,16 +83,6 @@ "keyv": "^5.6.0" } }, - "node_modules/@cacheable/utils/node_modules/keyv": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", - "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.1.1" - } - }, "node_modules/@csstools/css-calc": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.4.3.tgz", @@ -213,9 +176,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz", - "integrity": "sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.2.tgz", + "integrity": "sha512-qx19O8AbbLLbDSAcI6YOby/Vq8rV51psgIvlF5OZT/L8fQJDCyQifL6k+kYU4a8ySpzJ4RBzZkIs530bAn8y4Q==", "dev": true, "funding": [ { @@ -232,8 +195,8 @@ "node": ">=20.19.0" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^4.0.0", - "@csstools/css-tokenizer": "^4.0.0" + "@csstools/css-parser-algorithms": "^4.0.2", + "@csstools/css-tokenizer": "^4.0.2" } }, "node_modules/@csstools/selector-resolve-nested": { @@ -340,9 +303,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", - "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -397,9 +360,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", - "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.3.tgz", + "integrity": "sha512-IkO+/KEUvwbVpiURZg+P7zF74z5Jxe0UgJxVni+RtoHQ6IZieXaO02kmadomap/q+l6bc/jdPGGqTjhuZnuz1Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -485,6 +448,23 @@ "url": "https://github.com/sponsors/nzakas" } }, + "node_modules/@keyv/bigmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@keyv/bigmap/-/bigmap-1.3.1.tgz", + "integrity": "sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hashery": "^1.4.0", + "hookified": "^1.15.0" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.6.0" + } + }, "node_modules/@keyv/serialize": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.1.1.tgz", @@ -777,16 +757,6 @@ "qified": "^0.10.1" } }, - "node_modules/cacheable/node_modules/keyv": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", - "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.1.1" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1435,18 +1405,21 @@ } }, "node_modules/eslint": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.2.1.tgz", - "integrity": "sha512-wiyGaKsDgqXvF40P8mDwiUp/KQjE1FdrIEJsM8PZ3XCiniTMXS3OHWWUe5FI5agoCnr8x4xPrTDZuxsBlNHl+Q==", + "version": "10.13.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.13.0.tgz", + "integrity": "sha512-UohDjD4zSzEwhf58M3O7vc/ycc8O1I7dNlhtD0WxE8Px8EHNJKtUwzBqrzeGhisRuv2ag4sAYswszCJRgKXYUg==", "dev": true, "license": "MIT", + "workspaces": [ + "packages/*" + ], "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.5", - "@eslint/config-helpers": "^0.5.5", + "@eslint/config-helpers": "^0.7.0", "@eslint/core": "^1.2.1", - "@eslint/plugin-kit": "^0.7.1", + "@eslint/plugin-kit": "^0.7.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", @@ -1461,14 +1434,14 @@ "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", + "file-entry-cache": "11.1.5 || >11.1.6 <12", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "minimatch": "^10.2.4", + "minimatch": "^10.2.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -1729,16 +1702,13 @@ } }, "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz", + "integrity": "sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" + "flat-cache": "^6.1.23" } }, "node_modules/fill-range": { @@ -1772,23 +1742,21 @@ } }, "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "6.1.23", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz", + "integrity": "sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" + "cacheable": "^2.5.0", + "flatted": "^3.4.2", + "hookified": "^1.15.0" } }, "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", "dev": true, "license": "ISC" }, @@ -2167,13 +2135,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -2196,13 +2157,13 @@ "license": "MIT" }, "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz", + "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==", "dev": true, "license": "MIT", "dependencies": { - "json-buffer": "3.0.1" + "@keyv/serialize": "^1.1.1" } }, "node_modules/kind-of": { @@ -3102,28 +3063,6 @@ "stylelint": "^16.8.2 || ^17.0.0" } }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "11.1.5", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-11.1.5.tgz", - "integrity": "sha512-+PFTHITI08JIGhnNpGNI8T8inUpgZfk3GNEqfT9R2zZV2iFXg3CvqzSl/uEhs7TSGujYRELEANyDvS8Fj7+S7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^6.1.23" - } - }, - "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.23", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.23.tgz", - "integrity": "sha512-f++BY9pTk+983xK1FLzlLpmM0i0z+jHmx3QESGkURMXujQZz1k5wzwX6hjnQ8goaD0B+sYnDK1yZ6MTyZfUaqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "cacheable": "^2.5.0", - "flatted": "^3.4.2", - "hookified": "^1.15.0" - } - }, "node_modules/stylelint/node_modules/ignore": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.12.tgz", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/package.json new/openQA-5.1793868658.dfa961c2/package.json --- old/openQA-5.1793722468.aa0c30fc/package.json 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/package.json 2026-11-05 09:50:58.000000000 +0100 @@ -14,7 +14,7 @@ "devDependencies": { "@eslint/js": "^10.0.1", "@stylistic/stylelint-plugin": "^5.0.1", - "eslint": "^10.2.1", + "eslint": "^10.13.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-prettier": "^5.5.5", "globals": "^17.13.0", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/t/10-jobs.t new/openQA-5.1793868658.dfa961c2/t/10-jobs.t --- old/openQA-5.1793722468.aa0c30fc/t/10-jobs.t 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/t/10-jobs.t 2026-11-05 09:50:58.000000000 +0100 @@ -453,8 +453,8 @@ return $fake_git_log; }); $job_mock->redefine( - git_diff => sub ($self, $dir, $range, $limit = undef) { - $got_diff_limit = $limit; + git_diff => sub ($self, $dir, $range, %options) { + $got_diff_limit = $options{limit}; return $fake_git_log; }); path('t/data/last_good.json')->copy_to(path(($job->_previous_scenario_jobs)[1]->result_dir(), 'vars.json')); @@ -1097,34 +1097,34 @@ $_settings{TEST} = 'L'; my $job = _job_create(\%_settings); - my $too_big = $job->git_diff('/foo', '123..456', 5); + my $too_big = $job->git_diff('/foo', '123..456', limit => 5); like $too_big, qr{Too many commits}, 'Too many commits'; combined_like { - my $non_numeric = $job->git_diff('/foo', 'nonumber..123456', 10); + my $non_numeric = $job->git_diff('/foo', 'nonumber..123456', limit => 10); like $non_numeric, qr{Cannot display diff because of a git problem}, 'rev-list --count returned no number'; } qr{returned non-numeric string}, 'rev-list --count returned no number - warning is logged'; combined_like { - my $fail = $job->git_diff('/foo', 'revlistfail..456', 10); + my $fail = $job->git_diff('/foo', 'revlistfail..456', limit => 10); like $fail, qr{Cannot display diff because of a git problem}, 'git rev-list exited with non-zero'; } qr{git failed}, 'git rev-list exited with non-zero - warning is logged'; combined_like { - my $fail = $job->git_diff('/foo', 'difffail..456', 10); + my $fail = $job->git_diff('/foo', 'difffail..456', limit => 10); like $fail, qr{Cannot display diff because of a git problem}, 'git diff exited with non-zero'; } qr{git failed}, 'git diff exited with non-zero - warning is logged'; - my $fail = $job->git_diff('/foo', 'longrange', 10); + my $fail = $job->git_diff('/foo', 'longrange', limit => 10); like $fail, qr{Computing diff timed out}, 'timeout logged specifically'; - my $res = $job->git_diff('/foo', 'invalidrange', 10); + my $res = $job->git_diff('/foo', 'invalidrange', limit => 10); like $res, qr{Cannot display diff: Invalid revision range}, 'error about invalid range returned'; - my $ok = $job->git_diff('/foo', '123..456', 10); + my $ok = $job->git_diff('/foo', '123..456', limit => 10); like $ok, qr{2 files changed}, 'expected git_diff output'; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/t/16-utils-runcmd.t new/openQA-5.1793868658.dfa961c2/t/16-utils-runcmd.t --- old/openQA-5.1793722468.aa0c30fc/t/16-utils-runcmd.t 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/t/16-utils-runcmd.t 2026-11-05 09:50:58.000000000 +0100 @@ -114,10 +114,14 @@ subtest 'log diff computation helper of job' => sub { my $msg = 'commit msg'; like OpenQA::Schema::Result::Jobs::git_log_diff(undef, $empty_tmp_dir, 'HEAD'), qr/$msg.*testfile/s, - 'commit and file mentioned'; + 'git_log_diff - commit and file mentioned'; like OpenQA::Schema::Result::Jobs::git_log_diff(undef, $empty_tmp_dir, 'HEAD', stat => '15,10'), qr/$msg.*\.\.\.ile.txt/s, - 'commit and file mentioned'; + 'git_log_diff - commit and shortened file mentioned'; + like OpenQA::Schema::Result::Jobs::git_diff(undef, $empty_tmp_dir, 'HEAD', limit => 3), qr/testfile.txt/, + 'git_diff - full filename'; + like OpenQA::Schema::Result::Jobs::git_diff(undef, $empty_tmp_dir, 'HEAD', limit => 3, stat => '15,10'), + qr/\.\.\.ile.txt/, 'git_diff - filename shortened'; }; subtest 'cache_ref' => sub { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/t/33-developer_mode.t new/openQA-5.1793868658.dfa961c2/t/33-developer_mode.t --- old/openQA-5.1793722468.aa0c30fc/t/33-developer_mode.t 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/t/33-developer_mode.t 2026-11-05 09:50:58.000000000 +0100 @@ -188,22 +188,33 @@ # skip timeout enter_developer_console_cmd $driver, '{"cmd":"set_assert_screen_timeout","timeout":0}'; - wait_for_developer_console_like( + my $pause_start = wait_for_developer_console_like( $driver, qr/\"set_assert_screen_timeout\":0/, 'response to set_assert_screen_timeout' ); - # wait until test paused + # wait until paused and the upload has finished + # note: The "match=on_prompt timed out" message might be sent before or after "outstanding_images" so we specify + # $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/\"(reason|test_execution_paused)\":\"match=on_prompt timed out/, 'paused after assert_screen timeout' ); - - # clear console so subsequent wait_for_developer_console_like calls don't see old output - $driver->execute_script( - '$("#log").empty(); document.getElementById("log").value = ""; window.lastWaitForDevelConsoleMsgMatch = 0;'); + my $upload_started_pos = wait_for_developer_console_like( + $driver, + qr/\"outstanding_images\":[1-9]*/, + 'progress of image upload received', + ONE_MINUTE, $pause_start + ); + my $upload_done_pos + = wait_for_developer_console_like($driver, qr/\"outstanding_images\":0/, 'image upload has finished', + ONE_MINUTE, $upload_started_pos); + my $update_last_match + = "window.lastWaitForDevelConsoleMsgMatch = Math.max(window.lastWaitForDevelConsoleMsgMatch || 0, $upload_done_pos);"; + $driver->execute_script($update_last_match); # try to resume enter_developer_console_cmd $driver, '{"cmd":"resume_test_execution"}'; @@ -226,29 +237,14 @@ # skip timeout (again) enter_developer_console_cmd $driver, '{"cmd":"set_assert_screen_timeout","timeout":0}'; - my $pause_start = wait_for_developer_console_like( + wait_for_developer_console_like( $driver, qr/\"set_assert_screen_timeout\":0/, 'response to set_assert_screen_timeout' ); - # wait until paused and the upload has finished - # note: The "match=on_prompt timed out" message might be sent before or after "outstanding_images" so we specify - # $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 until test paused (again) wait_for_developer_console_like($driver, qr/match=on_prompt timed out/, 'paused on assert_screen timeout (again)'); - my $upload_started_pos = wait_for_developer_console_like( - $driver, - qr/\"outstanding_images\":[1-9]*/, - 'progress of image upload received', - ONE_MINUTE, $pause_start - ); - my $upload_done_pos - = wait_for_developer_console_like($driver, qr/\"outstanding_images\":0/, 'image upload has finished', - 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'; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/t/lib/OpenQA/Test/FakeWorker.pm new/openQA-5.1793868658.dfa961c2/t/lib/OpenQA/Test/FakeWorker.pm --- old/openQA-5.1793722468.aa0c30fc/t/lib/OpenQA/Test/FakeWorker.pm 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/t/lib/OpenQA/Test/FakeWorker.pm 2026-11-05 09:50:58.000000000 +0100 @@ -7,6 +7,7 @@ use Mojo::Base -base; has global_settings => sub { {RETRIES => 3, RETRY_DELAY => 10, RETRY_DELAY_IF_WEBUI_BUSY => 90} }; has webui_host_specific_settings => sub { {} }; + has webui_hosts => sub { [] }; } has pool_directory => undef; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openQA-5.1793722468.aa0c30fc/t/ui/13-admin.t new/openQA-5.1793868658.dfa961c2/t/ui/13-admin.t --- old/openQA-5.1793722468.aa0c30fc/t/ui/13-admin.t 2026-11-03 17:14:28.000000000 +0100 +++ new/openQA-5.1793868658.dfa961c2/t/ui/13-admin.t 2026-11-05 09:50:58.000000000 +0100 @@ -725,8 +725,8 @@ }; subtest 'create key with expiration date' => sub { + $driver->find_element('#api-keys-form input[type=submit]')->click; my $row = wait_for_element( - trigger_function => sub { $driver->find_element('#api-keys-form input[type=submit]')->click }, selector => '#api-keys-tbody > tr', description => 'key row present' ) or return; @@ -737,8 +737,14 @@ $tbody = api_keys_tbody; unlike $tbody->get_text, qr/never/, 'no key without expiration date present so far'; $driver->find_element_by_id('expiration')->click; + wait_until( + sub { + $driver->execute_script('return document.getElementById("expiration-datetime-field")?.disabled;'); + }, + 'expiration field disabled' + ); + $driver->find_element('#api-keys-form input[type=submit]')->click; my $row = wait_for_element( - trigger_function => sub { $driver->find_element('#api-keys-form input[type=submit]')->click }, selector => '#api-keys-tbody tr:nth-child(2)', description => 'key row present (without expiration)' ) or return; ++++++ openQA.obsinfo ++++++ --- /var/tmp/diff_new_pack.8t1dsk/_old 2026-11-06 19:39:05.823767813 +0100 +++ /var/tmp/diff_new_pack.8t1dsk/_new 2026-11-06 19:39:05.827767980 +0100 @@ -1,5 +1,5 @@ name: openQA -version: 5.1793722468.aa0c30fc -mtime: 1793722468 -commit: aa0c30fcbc07ef6ddb3746ad0bd3a83336b09a48 +version: 5.1793868658.dfa961c2 +mtime: 1793868658 +commit: dfa961c22aed5d0dd1ee33a325c80b959d0ab70c
