fix(ui): проверить доступность и адаптивность сертификатов
This commit is contained in:
1 parent
f5a71728ac
commit
16fa6eb5d8
17 files changed
+101
-37
No files matched your search
@@ -0,0 +1,24 @@
|
||||
import { test, expect } from "@playwright/test"
|
||||
import { certificateRoutes, openIssue } from "./fixtures/certificate-issue"
|
||||
import { certificate, certificateState } from "./fixtures/certificates"
|
||||
for (const [name, width] of [["desktop", 1440], ["mobile", 390], ["narrow", 320]] as const) test("Сертификаты: клавиатура и адаптивность " + name, async ({ page }) => {
|
||||
await page.setViewportSize({ width, height: 900 }); await certificateRoutes(page)
|
||||
const long = { ...certificate, name: "certificate-with-a-very-long-name-for-narrow-screens", commonName: "very-long-subdomain-for-responsive-layout.example.test", sans: ["very-long-alternative-domain-for-responsive-layout.example.test"] }
|
||||
await page.route("**/api/certificates/state", r => r.fulfill({ json: certificateState([long]) }))
|
||||
await page.goto("/certificates"); await expect(page.getByText(long.name, { exact: true })).toBeVisible()
|
||||
const summary = page.getByLabel("Сводка сертификатов", { exact: true }); await expect(summary).toContainText("1")
|
||||
expect(await page.evaluate(() => document.documentElement.scrollWidth <= window.innerWidth + 1)).toBe(true)
|
||||
const detail = page.getByRole("button", { name: "Детали сертификата " + long.name, exact: true }); await detail.focus(); await page.keyboard.press("Enter")
|
||||
await expect(detail).toHaveAttribute("aria-expanded", "true"); await expect(page.getByText("Доверие", { exact: true })).toBeVisible()
|
||||
await page.screenshot({ path: "docs/ux-ui/screens/certificates-details-" + name + ".png", fullPage: true })
|
||||
await page.evaluate(() => { for (const element of document.querySelectorAll<HTMLElement>("*")) if (element.scrollTop > 0) element.scrollTop = 0 })
|
||||
await page.screenshot({ path: "docs/ux-ui/screens/certificates-overview-" + name + ".png", fullPage: true })
|
||||
await page.keyboard.press("Enter"); await expect(detail).toHaveAttribute("aria-expanded", "false")
|
||||
const search = page.getByRole("textbox", { name: "Поиск по имени, CN, эмитенту…" }); await search.fill("нет-совпадений"); await expect(page.getByText("Нет совпадений", { exact: true })).toBeVisible(); await search.fill("")
|
||||
const dialog = await openIssue(page)
|
||||
await expect.poll(async () => { const box = await dialog.boundingBox(); return !!box && box.x >= 0 && box.x + box.width <= width + 1 && (width >= 640 || box.width >= width - 2) }).toBe(true)
|
||||
expect(await dialog.evaluate(element => element.scrollWidth <= element.clientWidth + 1)).toBe(true)
|
||||
await page.screenshot({ path: "docs/ux-ui/screens/certificates-issue-" + name + ".png", fullPage: true })
|
||||
await page.keyboard.press("Escape"); await expect(dialog).toHaveCount(0)
|
||||
await expect(page.getByRole("button", { name: "Выпустить сертификат", exact: true })).toBeFocused()
|
||||
})
|
||||
Reference in new issue
Block a user