update: screenshot tests.

This commit is contained in:
Darshan
2026-01-25 17:06:10 +05:30
parent 2d5e64a21e
commit fe74760177
+44 -6
View File
@@ -7,6 +7,11 @@ const setMockSettings = async (page, settings) => {
}, settings);
};
const isUpgradeMode = async (page) => {
const value = await page.locator('body').getAttribute('data-upgrade');
return value === 'true';
};
const openAdvancedSettings = async (page) => {
const toggle = page.locator('.accordion-toggle');
if (await toggle.isVisible()) {
@@ -21,6 +26,10 @@ test.describe('Appwrite Web Installer - Screenshots', () => {
await page.waitForSelector('#hostname', { state: 'visible', timeout: 10000 });
await page.waitForTimeout(300);
if (await isUpgradeMode(page)) {
test.skip(true, 'Install flow screenshots are not available in upgrade mode.');
}
await expect(page.locator('h1')).toContainText('Setup your app');
await page.screenshot({ path: 'tests/playwright/screenshots/step-1-setup.png', fullPage: true });
@@ -62,6 +71,9 @@ test.describe('Appwrite Web Installer - Screenshots', () => {
test('capture validation states', async ({ page }) => {
await page.goto('/');
await page.waitForLoadState('networkidle');
if (await isUpgradeMode(page)) {
test.skip(true, 'Install validation screenshots are not available in upgrade mode.');
}
await page.waitForSelector('#hostname', { state: 'visible', timeout: 10000 });
await page.locator('#hostname').fill('');
@@ -79,6 +91,9 @@ test.describe('Appwrite Web Installer - Screenshots', () => {
test('capture account validation states', async ({ page }) => {
await page.goto('/?step=3');
await page.waitForLoadState('networkidle');
if (await isUpgradeMode(page)) {
test.skip(true, 'Account step is not available in upgrade mode.');
}
await page.waitForSelector('#account-name', { state: 'visible', timeout: 10000 });
await page.locator('#account-name').fill('');
@@ -96,20 +111,29 @@ test.describe('Appwrite Web Installer - Screenshots', () => {
await page.goto('/?step=4');
await page.waitForLoadState('networkidle');
await page.waitForSelector('button:has-text("Install")', { state: 'visible', timeout: 10000 });
await page.locator('button:has-text("Install")').click();
const upgrade = await isUpgradeMode(page);
const actionLabel = upgrade ? 'Update' : 'Install';
const screenshotName = upgrade ? 'upgrade-error' : 'install-error';
await page.waitForSelector(`button:has-text("${actionLabel}")`, { state: 'visible', timeout: 10000 });
await page.locator(`button:has-text("${actionLabel}")`).click();
await page.waitForSelector('.install-row[data-status="error"]', { timeout: 15000 });
await page.screenshot({ path: 'tests/playwright/screenshots/install-error.png', fullPage: true });
await page.screenshot({ path: `tests/playwright/screenshots/${screenshotName}.png`, fullPage: true });
});
test('capture toast state (mock)', async ({ page }) => {
await setMockSettings(page, { toast: true });
await page.goto('/?step=4');
await page.waitForLoadState('networkidle');
await page.waitForSelector('button:has-text("Install")', { state: 'visible', timeout: 10000 });
await page.locator('button:has-text("Install")').click();
const upgrade = await isUpgradeMode(page);
const actionLabel = upgrade ? 'Update' : 'Install';
const screenshotName = upgrade ? 'toast-session-expired-upgrade' : 'toast-session-expired';
await page.waitForSelector(`button:has-text("${actionLabel}")`, { state: 'visible', timeout: 10000 });
await page.locator(`button:has-text("${actionLabel}")`).click();
await page.waitForSelector('.installer-toast', { state: 'visible', timeout: 10000 });
await page.screenshot({ path: 'tests/playwright/screenshots/toast-session-expired.png', fullPage: true });
await page.waitForSelector('.installer-toast:not(.is-entering)', { state: 'visible', timeout: 10000 });
await page.waitForTimeout(450);
await page.screenshot({ path: `tests/playwright/screenshots/${screenshotName}.png`, fullPage: true });
});
test('capture upgrade flow screenshots (mock upgrade)', async ({ page }) => {
@@ -121,6 +145,20 @@ test.describe('Appwrite Web Installer - Screenshots', () => {
await expect(page.locator('h1')).toContainText(/Update your app/i);
await page.screenshot({ path: 'tests/playwright/screenshots/upgrade-step-1-setup.png', fullPage: true });
// Upgrade: advanced settings open
await openAdvancedSettings(page);
await page.waitForTimeout(200);
await page.screenshot({ path: 'tests/playwright/screenshots/upgrade-step-1-advanced.png', fullPage: true });
// Upgrade: locked database tooltip
const dbTooltipTrigger = page.locator('.selector-card.has-tooltip').first();
if (await dbTooltipTrigger.isVisible()) {
await dbTooltipTrigger.hover();
await page.waitForSelector('.tooltip-db-locked', { state: 'visible', timeout: 5000 });
await page.waitForTimeout(200);
await page.screenshot({ path: 'tests/playwright/screenshots/upgrade-step-1-db-tooltip.png', fullPage: true });
}
await page.locator('button:has-text("Next")').click();
await page.waitForSelector('[data-review-value="appDomain"]', { state: 'visible', timeout: 10000 });
await page.screenshot({ path: 'tests/playwright/screenshots/upgrade-step-4-review.png', fullPage: true });