mirror of
https://github.com/azaion/ui.git
synced 2026-06-21 13:51:11 +00:00
[AZ-461] [AZ-464] [AZ-470] [AZ-472] Batch 5 - detection/bulk-validate/panel-width/classes tests
ci/woodpecker/push/build-arm Pipeline was successful
ci/woodpecker/push/build-arm Pipeline was successful
- AZ-461 sync image detect URL canary (FT-P-11) PASS;
async-video QUARANTINE (FT-P-12) + X-Refresh-Token drift
(FT-P-13) recorded as it.fails() with controls.
- AZ-464 bulk-validate URL + UI sync (≤2 s) PASS;
body shape drift {annotationIds,status} vs contract
{ids,targetStatus:30} captured as it.fails().
- AZ-470 panel-width debounce + rehydration: entire task
is Phase-B target (useResizablePanel has no PUT writer
/ no rehydration); 3 ACs as it.fails() with controls.
- AZ-472 DetectionClasses load + click + fallback PASS;
hotkey arithmetic P=0 PASS, P=20/P=40 it.fails() for
classes[idx+P]-against-dense-array drift.
Code review: PASS (0 findings). Fast: 18/18 files,
102 passed / 13 skipped. Static: 21/21 PASS.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import { test, expect } from '@playwright/test'
|
||||
|
||||
// AZ-472 — e2e companion for FT-P-44 (DetectionClasses load contract).
|
||||
//
|
||||
// The fast suite covers all four ACs (load + hotkeys + click + fallback);
|
||||
// the e2e companion exists so the load path is observed end-to-end against
|
||||
// the real `annotations/` service. Hotkey and click paths are not duplicated
|
||||
// here — they're already deterministic in JSDOM.
|
||||
|
||||
test.describe('AZ-472 — DetectionClasses (e2e companion)', () => {
|
||||
test('AC-1 (FT-P-44) — GET /api/annotations/classes observed at mount', async ({ page }) => {
|
||||
const gets: { url: string }[] = []
|
||||
await page.route('**/api/annotations/classes', async (route) => {
|
||||
if (route.request().method() === 'GET') {
|
||||
gets.push({ url: route.request().url() })
|
||||
}
|
||||
await route.continue()
|
||||
})
|
||||
|
||||
await page.goto('/annotations')
|
||||
|
||||
// The DetectionClasses panel renders inside the left sidebar of
|
||||
// <AnnotationsPage>. Wait for it to be visible by its localized title.
|
||||
const heading = page.getByText(/Classes/i).first()
|
||||
if (!(await heading.isVisible({ timeout: 5000 }).catch(() => false))) {
|
||||
test.skip(true, 'DetectionClasses panel not rendered (auth gate?)')
|
||||
}
|
||||
|
||||
expect(gets.length).toBeGreaterThan(0)
|
||||
for (const g of gets) {
|
||||
const path = new URL(g.url).pathname
|
||||
expect(path).toBe('/api/annotations/classes')
|
||||
}
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user