symbanta-dashboard-71d3df91-0d92

job succeeded

starting new job...
rundir='/etc/byggsteg/job-clone//symbanta-dashboard/trunk succeeded43 lines · 0.8s
branch='trunk'
if ! command -v git >/dev/null 2>&1; then
  echo 'byggsteg: git is not on this deployment PATH, so the clone cannot be updated' >&2
  exit 1
fi
if ! cd "$dir"; then
  echo "byggsteg: cannot enter the clone $dir" >&2
  exit 1
fi
root=$(git rev-parse --show-toplevel 2>/dev/null)
if [ "$root" != "$(pwd -P)" ]; then
  echo "byggsteg: $dir is not a git checkout; remove it and the next run clones it again" >&2
  exit 1
fi
if ! origin=$(git remote get-url origin 2>/dev/null); then
  echo "byggsteg: $dir has no origin remote to fetch $branch from" >&2
  exit 1
fi
before=$(git rev-parse --short HEAD 2>/dev/null) || before=none
attempt=1
while :; do
  if GIT_TERMINAL_PROMPT=0 git fetch --quiet origin "+refs/heads/$branch:refs/remotes/origin/$branch"; then
    break
  fi
  if [ "$attempt" -ge 3 ]; then
    echo "byggsteg: could not fetch $branch from $origin after 3 attempts; is the branch still there, and is the remote reachable?" >&2
    exit 1
  fi
  echo "byggsteg: fetching $branch from $origin failed; retrying in $((attempt * 2))s" >&2
  sleep $((attempt * 2))
  attempt=$((attempt + 1))
done
if ! git checkout --quiet --force -B "$branch" FETCH_HEAD; then
  echo "byggsteg: fetched $branch from $origin but could not check it out" >&2
  exit 1
fi
after=$(git rev-parse --short HEAD)
if [ "$before" = "$after" ]; then
  echo "byggsteg: $branch was already at $after"
else
  echo "byggsteg: $branch moved from $before to $after"
fi


byggsteg: trunk moved from 159fb39 to 811337e
setupuname -a succeeded1 lines · 0.0s
Linux wolk-jjba 7.2.11-gnu #1 SMP PREEMPT_DYNAMIC 1 x86_64 GNU/Linux
setupgit log --name-status HEAD^..HEAD succeeded5 lines · 0.0s
commit 811337e52b7b2b03198a7bf8227e9e473fca0b8e
Author: Josep Bigorra (Joe) <jjbigorra@gmail.com>
Date:   Tue Nov 10 20:47:39 2026 +0100

    chore: show the sponsor button

A       .github/FUNDING.yml
testmaak test succeeded99 lines · 1m 27s
⚡ Node.js frontend environment loaded
Node version: v24.19.0
NPM version:  11.17.0

up to date, audited 344 packages in 37s

86 packages are looking for funding
  run `npm fund` for details

5 moderate severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
npm warn allow-scripts 1 package has install scripts not yet covered by allowScripts:
npm warn allow-scripts   esbuild@0.28.2 (postinstall: node install.js)
npm warn allow-scripts
npm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts <pkg>` to allow.

> symbanta-dashboard@0.5.1 test
> vitest run


 RUN  v5.0.5 /etc/byggsteg/job-clone/symbanta-dashboard/trunk

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > exposes exactly one h1, one main landmark and labelled panels
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > provides a keyboard skip link that targets the main landmark
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > offers a screen-reader table alternative for the traffic chart
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > makes the scrollable tables reachable and named
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > announces refresh progress through a polite live region
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > passes the structural audit
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > passes axe-core WCAG 2.1 A/AA
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

 ✓ src/a11y/dashboard.a11y.test.tsx (7 tests) 2546ms
   ✓ dashboard accessibility (7)
     ✓ exposes exactly one h1, one main landmark and labelled panels 553ms
     ✓ provides a keyboard skip link that targets the main landmark 310ms
     ✓ passes axe-core WCAG 2.1 A/AA 875ms
 ✓ src/i18n/catalog.test.ts (66 tests) 1388ms
   ✓ the gettext template (3)
     ✓ is in sync with the source code 421ms
 ✓ src/StatsTables.test.tsx (15 tests) 738ms
   ✓ Top routes panel (3)
     ✓ renders the breakdown rows 417ms
 ✓ src/ui.test.tsx (17 tests) 609ms
 ✓ src/ConsoleLogs.test.tsx (10 tests) 874ms
   ✓ ConsoleLogs (10)
     ✓ shows a skeleton while loading 332ms
 ✓ src/i18n/I18nContext.test.tsx (11 tests) 578ms
 ✓ src/a11y/ContrastContext.test.tsx (7 tests) 538ms
 ✓ src/ThemeContext.test.tsx (10 tests) 443ms
 ✓ src/DomainSwitcher.test.tsx (7 tests) 370ms
 ✓ src/StatsDashboard.test.tsx (8 tests) 448ms
 ✓ src/PeriodContext.test.tsx (5 tests) 378ms
 ✓ mock-api/routes.test.ts (34 tests) 66ms
 ✓ src/Prelude.test.ts (21 tests) 63ms
 ✓ src/i18n/translate.test.ts (15 tests) 62ms
 ✓ src/i18n/locale.test.ts (16 tests) 43ms
 ✓ src/api/custom-fetch.test.ts (13 tests) 35ms
 ✓ src/a11y/tokens.test.ts (10 tests) 51ms
 ✓ src/i18n/plural.test.ts (11 tests) 32ms
 ✓ src/a11y/contrast.test.ts (17 tests) 36ms
 ✓ src/a11y/colorUsage.test.ts (3 tests) 22ms

 Test Files  20 passed (20)
      Tests  303 passed (303)
   Start at  20:52:47
   Duration  44.21s (environment 57%, tests 24%, setup 10%, import 7%, transform 3%)

Environment  jsdom was created 20 times · 22.40s total, 57% of tracked time
             create it once per worker with pool: 'vmThreads' (keeps per-file isolation) or isolate: false (shares it across files)
             learn more: https://vitest.dev/guide/improving-performance#test-environments



--------------------------------------------------------------

Maak 0.14.0: the infinitely extensible command runner

Loading tasks from Maak file: /etc/byggsteg/job-clone/symbanta-dashboard/trunk/maak.scm

Executing Maak tasks: test


--------------------------------------------------------------

=> Running Maak task: test

  Run the automated test suite.

  Execute command:
nix develop . --command bash -c 'npm install && npm test'

Executing: nix develop . --command bash -c 'npm install && npm test'
deploysudo maak deploy succeeded165 lines · 43s
warning: Git tree '/etc/byggsteg/job-clone/symbanta-dashboard/trunk' is dirty
⚡ Node.js frontend environment loaded
Node version: v24.19.0
NPM version:  11.17.0

up to date, audited 344 packages in 1s

86 packages are looking for funding
  run `npm fund` for details

5 moderate severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
npm warn allow-scripts 1 package has install scripts not yet covered by allowScripts:
npm warn allow-scripts   esbuild@0.28.2 (postinstall: node install.js)
npm warn allow-scripts
npm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts <pkg>` to allow.

> symbanta-dashboard@0.5.1 test
> vitest run


 RUN  v5.0.5 /etc/byggsteg/job-clone/symbanta-dashboard/trunk

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > exposes exactly one h1, one main landmark and labelled panels
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > provides a keyboard skip link that targets the main landmark
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > offers a screen-reader table alternative for the traffic chart
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > makes the scrollable tables reachable and named
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > announces refresh progress through a polite live region
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > passes the structural audit
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

stderr | src/a11y/dashboard.a11y.test.tsx > dashboard accessibility > passes axe-core WCAG 2.1 A/AA
The width(0) and height(0) of chart should be greater than 0,
       please check the style of container, or the props width(100%) and height(100%),
       or add a minWidth(0) or minHeight(undefined) or use aspect(undefined) to control the
       height and width.

 ✓ src/a11y/dashboard.a11y.test.tsx (7 tests) 1660ms
   ✓ dashboard accessibility (7)
     ✓ exposes exactly one h1, one main landmark and labelled panels 401ms
     ✓ passes axe-core WCAG 2.1 A/AA 599ms
 ✓ src/i18n/catalog.test.ts (66 tests) 987ms
   ✓ the gettext template (3)
     ✓ is in sync with the source code 337ms
 ✓ src/ConsoleLogs.test.tsx (10 tests) 460ms
 ✓ src/StatsTables.test.tsx (15 tests) 467ms
 ✓ src/ui.test.tsx (17 tests) 540ms
 ✓ src/i18n/I18nContext.test.tsx (11 tests) 341ms
 ✓ src/a11y/ContrastContext.test.tsx (7 tests) 320ms
 ✓ src/StatsDashboard.test.tsx (8 tests) 375ms
 ✓ src/ThemeContext.test.tsx (10 tests) 341ms
 ✓ src/PeriodContext.test.tsx (5 tests) 270ms
 ✓ src/DomainSwitcher.test.tsx (7 tests) 281ms
 ✓ mock-api/routes.test.ts (34 tests) 41ms
 ✓ src/Prelude.test.ts (21 tests) 37ms
 ✓ src/i18n/translate.test.ts (15 tests) 34ms
 ✓ src/a11y/tokens.test.ts (10 tests) 26ms
 ✓ src/i18n/locale.test.ts (16 tests) 28ms
 ✓ src/a11y/contrast.test.ts (17 tests) 23ms
 ✓ src/api/custom-fetch.test.ts (13 tests) 24ms
 ✓ src/i18n/plural.test.ts (11 tests) 20ms
 ✓ src/a11y/colorUsage.test.ts (3 tests) 12ms

 Test Files  20 passed (20)
      Tests  303 passed (303)
   Start at  20:53:35
   Duration  27.89s (environment 55%, tests 26%, setup 10%, import 6%, transform 3%)

Environment  jsdom was created 20 times · 13.63s total, 55% of tracked time
             create it once per worker with pool: 'vmThreads' (keeps per-file isolation) or isolate: false (shares it across files)
             learn more: https://vitest.dev/guide/improving-performance#test-environments

warning: Git tree '/etc/byggsteg/job-clone/symbanta-dashboard/trunk' is dirty
⚡ Node.js frontend environment loaded
Node version: v24.19.0
NPM version:  11.17.0

up to date, audited 344 packages in 1s

86 packages are looking for funding
  run `npm fund` for details

5 moderate severity vulnerabilities

To address all issues, run:
  npm audit fix

Run `npm audit` for details.
npm warn allow-scripts 1 package has install scripts not yet covered by allowScripts:
npm warn allow-scripts   esbuild@0.28.2 (postinstall: node install.js)
npm warn allow-scripts
npm warn allow-scripts Run `npm approve-scripts --allow-scripts-pending` to review, or `npm approve-scripts <pkg>` to allow.

> symbanta-dashboard@0.5.1 build
> tsc -b && vite build

vite v8.3.5 building client environment for production...
transforming...
✓ 722 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html                   0.80 kB │ gzip:   0.42 kB
dist/assets/index-BsN6-mDP.css   63.37 kB │ gzip:  11.74 kB
dist/assets/index-D_rjWkso.js   757.62 kB │ gzip: 220.92 kB

[plugin builtin:vite-reporter] 
(!) Some chunks are larger than 500 kB after minification. Consider:
- Using dynamic import() to code-split the application
- Use build.rolldownOptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/OutputOptions.codeSplitting
- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
✓ built in 1.12s
removed '/srv/symbanta.jointhefreeworld.org/assets/index-D_rjWkso.js'
removed '/srv/symbanta.jointhefreeworld.org/assets/index-BsN6-mDP.css'
removed directory '/srv/symbanta.jointhefreeworld.org/assets'
removed '/srv/symbanta.jointhefreeworld.org/favicon.svg'
removed '/srv/symbanta.jointhefreeworld.org/fonts/juliamono-bold-latin.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/juliamono-normal-latin.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-italic-latin-ext.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-italic-latin.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-normal-latin-ext.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-normal-latin.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-italic-latin-ext.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-italic-latin.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-normal-latin-ext.woff2'
removed '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-normal-latin.woff2'
removed directory '/srv/symbanta.jointhefreeworld.org/fonts'
removed '/srv/symbanta.jointhefreeworld.org/icons.svg'
removed '/srv/symbanta.jointhefreeworld.org/index.html'
'dist/assets' -> '/srv/symbanta.jointhefreeworld.org/assets'
'dist/assets/index-D_rjWkso.js' -> '/srv/symbanta.jointhefreeworld.org/assets/index-D_rjWkso.js'
'dist/assets/index-BsN6-mDP.css' -> '/srv/symbanta.jointhefreeworld.org/assets/index-BsN6-mDP.css'
'dist/favicon.svg' -> '/srv/symbanta.jointhefreeworld.org/favicon.svg'
'dist/fonts' -> '/srv/symbanta.jointhefreeworld.org/fonts'
'dist/fonts/juliamono-bold-latin.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/juliamono-bold-latin.woff2'
'dist/fonts/juliamono-normal-latin.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/juliamono-normal-latin.woff2'
'dist/fonts/source-serif-4-italic-latin-ext.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-italic-latin-ext.woff2'
'dist/fonts/source-serif-4-italic-latin.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-italic-latin.woff2'
'dist/fonts/source-serif-4-normal-latin-ext.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-normal-latin-ext.woff2'
'dist/fonts/source-serif-4-normal-latin.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/source-serif-4-normal-latin.woff2'
'dist/fonts/work-sans-italic-latin-ext.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-italic-latin-ext.woff2'
'dist/fonts/work-sans-italic-latin.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-italic-latin.woff2'
'dist/fonts/work-sans-normal-latin-ext.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-normal-latin-ext.woff2'
'dist/fonts/work-sans-normal-latin.woff2' -> '/srv/symbanta.jointhefreeworld.org/fonts/work-sans-normal-latin.woff2'
'dist/icons.svg' -> '/srv/symbanta.jointhefreeworld.org/icons.svg'
'dist/index.html' -> '/srv/symbanta.jointhefreeworld.org/index.html'


--------------------------------------------------------------

Maak 0.14.0: the infinitely extensible command runner

Loading tasks from Maak file: /etc/byggsteg/job-clone/symbanta-dashboard/trunk/maak.scm

Executing Maak tasks: deploy


--------------------------------------------------------------

=> Running Maak task: deploy

  Deploy the project, refusing to continue when the test suite fails.

  Execute command:
nix develop . --command bash -c 'npm install && npm test'

Executing: nix develop . --command bash -c 'npm install && npm test'

  Execute command:
nix develop . --command bash -c 'npm install && npm run build'

Executing: nix develop . --command bash -c 'npm install && npm run build'

Executing: rm -rfv /srv/symbanta.jointhefreeworld.org/*

Executing: cp -r -v dist/* /srv/symbanta.jointhefreeworld.org/
inspect the job's lambda expression
(lambda()
  `((task . ("maak-test" "maak-deploy"))
    (project . "symbanta-dashboard")
    (branch-name . "trunk")
    (clone-url . "https://github.com/jjba23/symbanta-dashboard.git")))