fix: restore scrolling and validator enforcement
ForgeFlow quality gate / quality (push) Canceled after 0s
ForgeFlow quality gate / quality (push) Canceled after 0s
This commit is contained in:
@@ -60,6 +60,24 @@ async function assertSurface(page) {
|
||||
expect(audit.headings.length).toBeGreaterThan(0);
|
||||
}
|
||||
|
||||
async function assertScrollableWhenOverflowing(page, selector) {
|
||||
const target = page.locator(selector);
|
||||
await expect(target).toBeVisible();
|
||||
await expect(target).toHaveCSS("overflow-y", /auto|scroll/);
|
||||
let metrics;
|
||||
await expect.poll(async () => {
|
||||
metrics = await target.evaluate((element) => ({
|
||||
connected: element.isConnected,
|
||||
clientHeight: element.clientHeight,
|
||||
scrollHeight: element.scrollHeight,
|
||||
}));
|
||||
return metrics.connected && metrics.clientHeight > 0;
|
||||
}).toBe(true);
|
||||
if (metrics.scrollHeight > metrics.clientHeight + 1) {
|
||||
await target.evaluate((element) => { element.scrollTop = element.scrollHeight; });
|
||||
await expect.poll(() => target.evaluate((element) => element.scrollTop)).toBeGreaterThan(0);
|
||||
}
|
||||
}
|
||||
test("shell, overview, repositories and settings remain responsive and accessible", async ({ page }, testInfo) => {
|
||||
await assertSurface(page);
|
||||
for (const view of ["overview", "deployments", "settings"]) {
|
||||
@@ -86,13 +104,28 @@ test("repository changes, Git tools and Git Validator complete their primary flo
|
||||
}
|
||||
await page.locator('[data-action="repo-tab"][data-tab="validator"]').click();
|
||||
await expect(page.locator(".validator-score")).toBeVisible();
|
||||
await assertScrollableWhenOverflowing(page, ".validator-page");
|
||||
await expect(page.locator("#validator-policy")).toBeVisible();
|
||||
await page.locator("#validator-policy").selectOption("production");
|
||||
await expect(page.locator(".validator-hero")).toContainText(/Production policy/i);
|
||||
await expect(page.locator(".validator-hero")).toContainText(/review required/i);
|
||||
await page.keyboard.press("Tab");
|
||||
await expect(page.locator(":focus")).toBeVisible();
|
||||
});
|
||||
|
||||
test("every long application surface retains a working vertical scroll owner", async ({ page }) => {
|
||||
for (const view of ["overview", "deployments", "diagnostics", "settings"]) {
|
||||
await page.locator(`.nav-button[data-view="${view}"]`).click();
|
||||
await assertScrollableWhenOverflowing(page, ".main-canvas");
|
||||
}
|
||||
await page.locator('[data-action="select-repo"]').first().click();
|
||||
for (const tab of ["history", "deployments", "gittools", "validator", "settings"]) {
|
||||
await page.locator(`[data-action="repo-tab"][data-tab="${tab}"]`).click();
|
||||
const scrollRoot = page.locator(".repo-content > .tab-page, .repo-content > .validator-page");
|
||||
if (await scrollRoot.count())
|
||||
await assertScrollableWhenOverflowing(page, ".repo-content > .tab-page, .repo-content > .validator-page");
|
||||
}
|
||||
});
|
||||
test("deployment inventory supports dense workloads without ambiguous blank cards", async ({ page }) => {
|
||||
await page.locator('.nav-button[data-action="navigate"][data-view="deployments"]').click();
|
||||
await expect(page.locator(".deploy-card, .server-inventory-panel .tool-row").first()).toBeVisible();
|
||||
|
||||
Reference in New Issue
Block a user