@@ -289,6 +289,18 @@ test.describe("backups ready: stats + backup-now", () => {
289289 await expect ( page . getByText ( "42" ) ) . toBeVisible ( ) ;
290290 // bucket_bytes NULL → "unknown" shown, per the indicators rule.
291291 await expect ( page . getByText ( / b u c k e t b y t e s : \s * u n k n o w n / i) ) . toBeVisible ( ) ;
292+ // The "Observed" timestamp belongs to the kopia-reported repo stats, so
293+ // it sits under "Physical bytes", above the bucket figure.
294+ const statsPanel = page
295+ . getByRole ( "heading" , { name : / r e p o s i t o r y s t a t s / i } )
296+ . locator ( ".." ) ;
297+ const panelText = await statsPanel . innerText ( ) ;
298+ expect ( panelText . indexOf ( "Observed" ) ) . toBeGreaterThan (
299+ panelText . indexOf ( "Physical bytes" ) ,
300+ ) ;
301+ expect ( panelText . indexOf ( "Observed" ) ) . toBeLessThan (
302+ panelText . indexOf ( "Bucket bytes" ) ,
303+ ) ;
292304 await expect ( page . getByText ( / r e c e n t r u n s / i) ) . toBeVisible ( ) ;
293305 await expect ( page . getByText ( "success" ) ) . toBeVisible ( ) ;
294306 // The run carries a server_id, so the table names which server it's from.
@@ -436,6 +448,7 @@ test.describe("backups ready: stats + backup-now", () => {
436448 await seedBackupRepoStats ( sql , {
437449 groupId : group . id ,
438450 bucketBytes : 107374182400 , // 100 GiB
451+ bucketBytesObservedAt : new Date ( Date . now ( ) - 86_400_000 ) . toISOString ( ) ,
439452 } ) ;
440453
441454 await page . goto ( `/groups/${ group . id } /backups` ) ;
@@ -445,6 +458,12 @@ test.describe("backups ready: stats + backup-now", () => {
445458 const tooltip = page . getByRole ( "tooltip" ) ;
446459 await expect ( tooltip ) . toContainText ( "$2.50/month" ) ;
447460 await expect ( tooltip ) . toContainText ( "ap-southeast-2" ) ;
461+ // The bucket figure comes from CloudWatch on its own daily cadence, so
462+ // the tooltip carries its measurement time and says it updates less
463+ // often than the kopia-reported stats.
464+ await expect ( tooltip ) . toContainText ( "From CloudWatch storage metrics" ) ;
465+ await expect ( tooltip ) . toContainText ( "measured" ) ;
466+ await expect ( tooltip ) . toContainText ( "about once a day" ) ;
448467 } ) ;
449468
450469 test ( "recent run shows a truncated, copyable snapshot id" , async ( {
0 commit comments