10 lines
1.9 KiB
TypeScript
10 lines
1.9 KiB
TypeScript
import {test,expect} from "@playwright/test"
|
|
for(const confirmed of [false,true])test("System DB: choose is not restore; strict receipt and cleanup warning/"+confirmed,async({page})=>{
|
|
let restores=0
|
|
await page.route("**/health",r=>r.fulfill({json:{status:"ok"}}));await page.route("**/api/**",r=>{const path=new URL(r.request().url()).pathname;if(path==="/api/auth/config")return r.fulfill({json:{required:false}});if(path==="/api/system/database/restore"){restores++;return r.fulfill({json:confirmed?{ok:true,cleanupError:"temporary dump cleanup failed"}:{ok:false}})}return r.fulfill({status:503,json:{error:"outside database fixture"}})})
|
|
await page.goto("/settings");await page.getByRole("button",{name:"Выбрать файл",exact:true}).click();await page.getByRole("dialog").locator('input[type="file"]').setInputFiles({name:"fixture.dump",mimeType:"application/octet-stream",buffer:Buffer.from("PGDMPfixture")});await page.getByRole("button",{name:"Продолжить",exact:true}).click();await expect(page.getByRole("alertdialog")).toBeVisible();await expect(page.getByText("Импорт выполнен",{exact:true})).toHaveCount(0);expect(restores).toBe(0)
|
|
await page.getByRole("alertdialog").getByRole("button",{name:"Восстановить",exact:true}).click()
|
|
if(confirmed){await expect(page.getByText("База приложения восстановлена",{exact:true})).toBeVisible();await expect(page.getByText("temporary dump cleanup failed",{exact:true})).toBeVisible();await expect(page.getByRole("alertdialog")).toHaveCount(0)}else{await expect(page.getByText("Восстановление базы не подтверждено сервером",{exact:true})).toBeVisible();await expect(page.getByText("База приложения восстановлена",{exact:true})).toHaveCount(0);await expect(page.getByRole("alertdialog")).toBeVisible()}
|
|
expect(restores).toBe(1)
|
|
})
|