horae-browser-checks
checks.x86_64-linux.browser
· build #228
· raw
1initdb: warning: enabling "trust" authentication for local connections2initdb: hint: You can change this by editing pg_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb.3waiting for server to start.... done4server started52026-10-07T12:44:29.113208Z INFO horae: Running migrations...62026-10-07T12:44:29.356645Z INFO horae: Migrations complete.72026-10-07T12:44:29.377238Z INFO horae::seed: Seeding demo data…82026-10-07T12:44:29.397375Z INFO horae::seed: Seed complete.92026-10-07T12:44:29.402408Z INFO horae::seed: time_entries: 10 rows102026-10-07T12:44:29.403858Z INFO horae::seed: clients: 2 rows11PASS: archived own timer labels survive without granting catalog or global-rate access12PASS: catalog/rate grants never enable unlinked or archived tasks for a new timer; valid start/stop persists13PASS: rail popovers accept clicks and release the resize handle after closing14PASS: scoped project list/detail expose workflow labels without directory access, private notes or rates15PASS: edit and managed-project revocation remove current UI authority without legacy Administrator fallback16PASS: inactive-account and changed-policy responses clear retained detail; retry recovers only the original binding17PASS: header actions, supported metrics and labelled native budget progress18PASS: design heading, compact row typography and inline project type19PASS: filtered empty state resets search, scope and client20PASS: narrow/short layouts, keyboard row actions and export formats21PASS: loading spend is unavailable until the read completes22PASS: failed spend is unavailable; retry restores real amounts23PASS: configured monthly consumption replaces lifetime spend only after loading24PASS: keyboard-accessible scope breakdown exposes overruns without layout overflow25PASS: failed configured budget never falls back to lifetime figures26PASS: empty-state guidance and action visibility for admin27PASS: empty-state guidance and action visibility for manager28PASS: empty-state guidance and action visibility for member29PASS: shared Menu, Combobox, empty-state and navigation-icon defaults are unchanged30PASS: /clients header at 320px31PASS: /clients header at 390px32PASS: /clients header at 768px33PASS: /clients header at 1280px34PASS: /clients header at 1440px35PASS: /projects header at 320px36PASS: /projects header at 390px37PASS: /projects header at 768px38PASS: /projects header at 1280px39PASS: /projects header at 1440px40PASS: /invoices header at 320px41PASS: /invoices header at 390px42PASS: /invoices header at 768px43PASS: /invoices header at 1280px44PASS: /invoices header at 1440px45PASS: /reports header at 320px46PASS: /reports header at 390px47PASS: /reports header at 768px48PASS: /reports header at 1280px49PASS: /reports header at 1440px50PASS: /admin/users header at 320px51PASS: /admin/users header at 390px52PASS: /admin/users header at 768px53PASS: /admin/users header at 1280px54PASS: /admin/users header at 1440px55PASS: /approvals header at 320px56PASS: /approvals header at 390px57PASS: /approvals header at 768px58PASS: /approvals header at 1280px59PASS: /approvals header at 1440px60PASS: /settings header at 320px61PASS: /settings header at 390px62PASS: /settings header at 768px63PASS: /settings header at 1280px64PASS: /settings header at 1440px65PASS: /admin/importers header at 320px66PASS: /admin/importers header at 390px67PASS: /admin/importers header at 768px68PASS: /admin/importers header at 1280px69PASS: /admin/importers header at 1440px70PASS: /timesheet/week/2026-10-05 header at 320px71PASS: /timesheet/week/2026-10-05 header at 390px72PASS: /timesheet/week/2026-10-05 header at 768px73PASS: /timesheet/week/2026-10-05 header at 1280px74PASS: /timesheet/week/2026-10-05 header at 1440px75PASS: /timesheet/day/2026-10-05 header at 320px76PASS: /timesheet/day/2026-10-05 header at 390px77PASS: /timesheet/day/2026-10-05 header at 768px78PASS: /timesheet/day/2026-10-05 header at 1280px79PASS: /timesheet/day/2026-10-05 header at 1440px80PASS: /timesheet/calendar/2026-10-05 header at 320px81PASS: /timesheet/calendar/2026-10-05 header at 390px82PASS: /timesheet/calendar/2026-10-05 header at 768px83PASS: /timesheet/calendar/2026-10-05 header at 1280px84PASS: /timesheet/calendar/2026-10-05 header at 1440px85PASS: project names and badges stay within aligned columns; scrolling to last-row actions opens editing86PASS: small-screen timesheet pager, date picker and view controls remain usable87PASS: admin subnavigation and its content remain reachable on mobile88PASS: day strip scrolls to Sunday and long entry labels do not cover actions89CHECK: late popover initialization restores missing focus without overriding deliberate focus90PASS: late popover initialization restores missing focus without overriding deliberate focus91CHECK: content reflow preserves an open menu while deliberate scrolling still dismisses it92PASS: content reflow preserves an open menu while deliberate scrolling still dismisses it93CHECK: first and last project-row actions are initially visible and clickable94PASS: first and last project-row actions are initially visible and clickable95CHECK: menu keyboard, disabled items, outside click and repeated opening96PASS: menu keyboard, disabled items, outside click and repeated opening97CHECK: scroll and resize dismiss without leaving stale menus or focus98PASS: scroll and resize dismiss without leaving stale menus or focus99CHECK: short-screen menu scrolls internally and supports reverse Tab and Space100PASS: short-screen menu scrolls internally and supports reverse Tab and Space101CHECK: filter and calendar menus keep their callbacks and survive route changes102PASS: filter and calendar menus keep their callbacks and survive route changes103CHECK: Timesheet keeps the shared calendar and week selection behavior104PASS: Timesheet keeps the shared calendar and week selection behavior105PASS: mobile content width, keyboard toggle, Escape/focus restoration and navigation close106PASS: short mobile viewport reaches account navigation and preserves desktop collapse state107PASS: desktop drag width survives mobile and breakpoint transitions108PASS: keyboard selection, mixed/select-all states and Actions count109PASS: search, status and client changes clear selection110PASS: keyboard selection/confirmation and no document overflow in both themes at three widths111PASS: cancel/focus, failure retry, pending guard and archive/reactivate confirmation112PASS: oversized selection cannot submit and members have no bulk controls113PASS: real atomic archive/reactivate, anonymous/member/inactive denial, manager/admin and safe retries114PASS: bulk success restores focus and recovers the list without stale actions115PASS: bulk pending restores focus and recovers the list without stale actions116PASS: bulk pending-navigation restores focus and recovers the list without stale actions117PASS: bulk failure restores focus and recovers the list without stale actions118PASS: client activation failure remains visible with form closed, open and cancelled119PASS: successful form save preserves action error; real status retry clears it and refreshes the row120PASS: archive failure survives menu dismissal; shared edit failure preserves input and safely retries121PASS: failed team removal preserves the draft, safely retries and can be restored through the shared editor122PASS: initial catalog/draft failures show loading and recovery without rendering or saving an empty replacement123PASS: design typography, section spacing, quiet dividers and theme-aware task information124PASS: project types retain native keyboard selection and the designed icon/option-card states125PASS: searchable client selection, pending/error recovery and explicit/inherited currency126PASS: client default-rate currency rejects relabelling, preserves failed input and permits compatible edits127PASS: task and teammate searches handle pending results, keyboard selection, duplicates and retry128PASS: real client, team, task restrictions, billing and invoice defaults survive reload129PASS: all invoice-default errors identify and focus their field, preserve input and recover at three widths130PASS: basic-field rejections retain values, link visible errors and restore focus at three widths131PASS: failed resume and retry preserve the existing draft without a replacement write132PASS: invalid hourly rates and hour/fee budgets retain input and focus their error at three widths133PASS: a stale email configuration rejection can be corrected without sending mail134PASS: task/person rate, cost and budget errors identify their row and preserve other inputs at three widths135PASS: single/monthly fees, empty schedules and individual milestone errors recover without changing another row136PASS: responsive form, conditional panels and Cancel preserve the draft137PASS: edits made while a save is pending are saved after its acknowledgement138PASS: lost acknowledgement retries the same request and preserves newer edits139ExpectError: expect(locator).toHaveCount(expected) failed140141Locator: locator('.proj-row')142Expected: 3143Received: 4144Timeout: 5000ms145146Call log:147 - Expect "to.have.count" with timeout 5000ms148 - waiting for locator('.proj-row')149 14 × locator resolved to 4 elements150 - unexpected value "4"151152 at captureRawStack (/nix/store/i6xnc927g8yrwq0fws8wbmjvj4y36fq5-playwright-test-1.60.0/lib/node_modules/playwright-core/lib/coreBundle.js:3130:17)153 at callMatcherAsStep (/nix/store/i6xnc927g8yrwq0fws8wbmjvj4y36fq5-playwright-test-1.60.0/lib/node_modules/playwright/lib/matchers/expect.js:12873:57)154 at Object.toHaveCount (/nix/store/i6xnc927g8yrwq0fws8wbmjvj4y36fq5-playwright-test-1.60.0/lib/node_modules/playwright/lib/matchers/expect.js:12863:23)155 at /nix/store/p5gpqm8lc90h61ir0d2bvddnvf39szbw-browser/new-project.cjs:1200:45 {156 matcherResult: {157 actual: 4,158 expected: 3,159 message: '\x1B[2mexpect(\x1B[22m\x1B[31mlocator\x1B[39m\x1B[2m).\x1B[22mtoHaveCount\x1B[2m(\x1B[22m\x1B[32mexpected\x1B[39m\x1B[2m)\x1B[22m failed\n' +160 '\n' +161 "Locator: locator('.proj-row')\n" +162 'Expected: \x1B[32m3\x1B[39m\n' +163 'Received: \x1B[31m4\x1B[39m\n' +164 'Timeout: 5000ms\n' +165 '\n' +166 'Call log:\n' +167 '\x1B[2m - Expect "to.have.count" with timeout 5000ms\x1B[22m\n' +168 "\x1B[2m - waiting for locator('.proj-row')\x1B[22m\n" +169 '\x1B[2m 14 × locator resolved to 4 elements\x1B[22m\n' +170 '\x1B[2m - unexpected value "4"\x1B[22m\n',171 name: 'toHaveCount',172 pass: false,173 log: [174 ' - Expect "to.have.count" with timeout 5000ms',175 " - waiting for locator('.proj-row')",176 ' 14 × locator resolved to 4 elements',177 ' - unexpected value "4"'178 ],179 timeout: 5000,180 ariaSnapshot: undefined181 }182}183{184 url: 'http://127.0.0.1:8093/projects',185 errors: [],186 pending: [],187 resources: [],188 page: '- complementary "Navigation":\n' +189 ' - text: Horae\n' +190 ' - button "Collapse sidebar": «\n' +191 ' - button "Start timer"\n' +192 ' - text: Track\n' +193 ' - link "Timesheet":\n' +194 ' - /url: /timesheet/week/2026-10-07?span=week\n' +195 ' - img\n' +196 ' - text: Timesheet\n' +197 ' - text: Organize\n' +198 ' - link "Clients":\n' +199 ' - /url: /clients\n' +200 ' - img\n' +201 ' - text: Clients\n' +202 ' - link "Projects":\n' +203 ' - /url: /projects\n' +204 ' - img\n' +205 ' - text: Projects\n' +206 ' - link "Invoices":\n' +207 ' - /url: /invoices\n' +208 ' - img\n' +209 ' - text: Invoices\n' +210 ' - text: Review\n' +211 ' - link "Approvals":\n' +212 ' - /url: /approvals\n' +213 ' - img\n' +214 ' - text: Approvals\n' +215 ' - link "Reports":\n' +216 ' - /url: /reports\n' +217 ' - img\n' +218 ' - text: Reports\n' +219 ' - button "AU Admin User Admin ⌄"\n' +220 '- main:\n' +221 ' - heading "Projects" [level=1]\n' +222 ' - link "New project":\n' +223 ' - /url: /projects/new\n' +224 ' - button "⚡ Actions ▾" [disabled]\n' +225 ' - link "Import":\n' +226 ' - /url: /admin/importers\n' +227 ' - button "Export"\n' +228 ' - textbox "Search by project or client"\n' +229 ' - button "Active projects (4) ▾"\n' +230 ' - button "All tags ▾"\n' +231 ' - button "All clients ▾"\n' +232 ' - region "Projects by client":\n' +233 ' - checkbox "Select all visible projects"\n' +234 ' - text: Client Budget Spent Budget remaining Acme Corp\n' +235 ' - checkbox "Select [ACME-01] Acme Website Redesign"\n' +236 ' - link "[ACME-01] Acme Website Redesign":\n' +237 ' - /url: /projects/01950000-0000-7000-8000-000000000005\n' +238 ' - text: Time & Materials 200h 13h\n' +239 ' - progressbar "Budget used for Acme Website Redesign": 7%\n' +240 ' - text: 187h (93%)\n' +241 ' - button "Actions ▾"\n' +242 ' - checkbox "Select Team recovery 1791377109120"\n' +243 ' - link "Team recovery 1791377109120":\n' +244 ' - /url: /projects/01a11665-72e4-7f81-b518-7a30fc0693d4\n' +245 ' - text: Non-Billable — EUR 0.00 —\n' +246 ' - button "Actions ▾"\n' +247 ' - text: New project browser client\n' +248 ' - checkbox "Select [BROWSER-NEW] Recovered latest edit"\n' +249 ' - link "[BROWSER-NEW] Recovered latest edit":\n' +250 ' - /url: /projects/01a11667-f3a5-7a70-83f2-ac82e5e4383c\n' +251 ' - text: Time & Materials\n' +252 ' - paragraph: "Total tracked: 0h"\n' +253 ' - text: 120h 0h\n' +254 ' - progressbar "Budget used for Recovered latest edit": 0%\n' +255 ' - text: 120h (100%)\n' +256 ' - button "Actions ▾"\n' +257 ' - text: TechStart Inc\n' +258 ' - checkbox "Select [TECH-01] TechStart API Integration"\n' +259 ' - link "[TECH-01] TechStart API Integration":\n' +260 ' - /url: /projects/01950000-0000-7000-8000-000000000006\n' +261 ' - text: Fixed Fee USD 15,000.00 USD 1,475.00\n' +262 ' - progressbar "Budget used for TechStart API Integration": 10%\n' +263 ' - text: USD 13,525.00 (90%)\n' +264 ' - button "Actions ▾"'265}266ExpectError: expect(locator).toHaveCount(expected) failed267268Locator: locator('.proj-row')269Expected: 3270Received: 4271Timeout: 5000ms272273Call log:274 - Expect "to.have.count" with timeout 5000ms275 - waiting for locator('.proj-row')276 14 × locator resolved to 4 elements277 - unexpected value "4"278279 at captureRawStack (/nix/store/i6xnc927g8yrwq0fws8wbmjvj4y36fq5-playwright-test-1.60.0/lib/node_modules/playwright-core/lib/coreBundle.js:3130:17)280 at callMatcherAsStep (/nix/store/i6xnc927g8yrwq0fws8wbmjvj4y36fq5-playwright-test-1.60.0/lib/node_modules/playwright/lib/matchers/expect.js:12873:57)281 at Object.toHaveCount (/nix/store/i6xnc927g8yrwq0fws8wbmjvj4y36fq5-playwright-test-1.60.0/lib/node_modules/playwright/lib/matchers/expect.js:12863:23)282 at /nix/store/p5gpqm8lc90h61ir0d2bvddnvf39szbw-browser/new-project.cjs:1200:45 {283 matcherResult: {284 actual: 4,285 expected: 3,286 message: '\x1B[2mexpect(\x1B[22m\x1B[31mlocator\x1B[39m\x1B[2m).\x1B[22mtoHaveCount\x1B[2m(\x1B[22m\x1B[32mexpected\x1B[39m\x1B[2m)\x1B[22m failed\n' +287 '\n' +288 "Locator: locator('.proj-row')\n" +289 'Expected: \x1B[32m3\x1B[39m\n' +290 'Received: \x1B[31m4\x1B[39m\n' +291 'Timeout: 5000ms\n' +292 '\n' +293 'Call log:\n' +294 '\x1B[2m - Expect "to.have.count" with timeout 5000ms\x1B[22m\n' +295 "\x1B[2m - waiting for locator('.proj-row')\x1B[22m\n" +296 '\x1B[2m 14 × locator resolved to 4 elements\x1B[22m\n' +297 '\x1B[2m - unexpected value "4"\x1B[22m\n',298 name: 'toHaveCount',299 pass: false,300 log: [301 ' - Expect "to.have.count" with timeout 5000ms',302 " - waiting for locator('.proj-row')",303 ' 14 × locator resolved to 4 elements',304 ' - unexpected value "4"'305 ],306 timeout: 5000,307 ariaSnapshot: undefined308 }309}3102026-10-07T12:44:29.438987Z WARN horae: DEV_LOGIN=1: /auth/dev-login signs anyone in as an admin without a password. Use it for local development only.3112026-10-07 12:44:28.880 UTC [18] LOG: starting PostgreSQL 17.10 on x86_64-pc-linux-gnu, compiled by clang version 21.1.8, 64-bit3122026-10-07 12:44:28.880 UTC [18] LOG: listening on Unix socket "/tmp/horae-browser.vwAM2g/.s.PGSQL.5432"3132026-10-07 12:44:28.882 UTC [21] LOG: database system was shut down at 2026-10-07 12:44:28 UTC3142026-10-07 12:44:28.887 UTC [18] LOG: database system is ready to accept connections3152026-10-07 12:47:59.832 UTC [18] LOG: received fast shutdown request3162026-10-07 12:47:59.832 UTC [18] LOG: aborting any active transactions3172026-10-07 12:47:59.835 UTC [18] LOG: background worker "logical replication launcher" (PID 24) exited with exit code 13182026-10-07 12:47:59.838 UTC [19] LOG: shutting down3192026-10-07 12:47:59.838 UTC [19] LOG: checkpoint starting: shutdown immediate3202026-10-07 12:47:59.854 UTC [19] LOG: checkpoint complete: wrote 1263 buffers (7.7%); 0 WAL file(s) added, 0 removed, 0 recycled; write=0.016 s, sync=0.001 s, total=0.017 s; sync files=0, longest=0.000 s, average=0.000 s; distance=6856 kB, estimate=6856 kB; lsn=0/1B9ECB8, redo lsn=0/1B9ECB83212026-10-07 12:47:59.863 UTC [18] LOG: database system is shut down