dwinzo-sdet/tests/screenshot.spec.js

110 lines
4.4 KiB
JavaScript

const { test, expect } = require('@playwright/test');
const fs = require('fs');
const path = require('path');
// Helper: Ensure folder exists
function ensureFolderExists(folderPath) {
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath, { recursive: true });
}
}
// Function to take screenshots at different viewport sizes
async function takeScreenshotsAtViewports(page, folderName, screenshotPrefix) {
const viewports = [
{ width: 1230, height: 629, name: 'moniter-spec' },
{ width: 1280, height: 800, name: 'lap-spec' },
{ width: 1920, height: 1080, name: 'TV-spec' },
];
const folderPath = path.join(__dirname, '..', 'test-results', folderName);
ensureFolderExists(folderPath);
for (const { width, height, name } of viewports) {
await page.setViewportSize({ width, height });
await page.waitForTimeout(500); // Allow viewports to settle slightly
const screenshotPath = path.join(folderPath, `${screenshotPrefix}-${name}.png`);
await page.screenshot({ path: screenshotPath, fullPage: true });
console.log(`Screenshot taken for ${name} resolution in folder ${folderName}`);
}
}
// Utility: Login to the app
async function login(page) {
const url = 'http://185.100.212.76:8200';
await page.goto(url, { waitUntil: 'networkidle' });
await page.getByPlaceholder('Email').fill('ramkumar@tester.local');
await page.getByPlaceholder('Password').fill('123456');
await page.getByRole('button', { name: 'Continue', exact: true }).click();
await page.waitForLoadState('networkidle'); // Wait after login
}
test('Login Page Screenshots', async ({ page }) => {
test.setTimeout(60000);
try {
await page.goto('http://185.100.212.76:8200', { waitUntil: 'networkidle' });
await page.waitForSelector('[placeholder="Email"]', { timeout: 10000 });
await takeScreenshotsAtViewports(page, 'login-screenshots/login-page-loaded', 'login-page-loaded');
console.log('Filling Email and Password fields...');
await page.getByPlaceholder('Email').fill('ramkumar@tester.local');
await page.getByPlaceholder('Password').fill('123456');
await takeScreenshotsAtViewports(page, 'login-screenshots/fields-filled', 'fields-filled');
console.log('Clicking the Continue button...');
await page.getByRole('button', { name: 'Continue', exact: true }).click();
await page.waitForLoadState('networkidle');
await takeScreenshotsAtViewports(page, 'login-screenshots/after-login', 'after-login');
} catch (error) {
console.error('An error occurred during login test:', error.message);
throw error;
}
});
test('Simulation Page Screenshots', async ({ page }) => {
test.setTimeout(120000); // Increase timeout for reliability
await login(page);
// Navigate to Simulation section
await page.getByText('Simulation', { exact: true }).click();
await page.waitForLoadState('networkidle');
await takeScreenshotsAtViewports(page, 'simulation-screenshots/simulation-page-loaded', 'simulation-page-loaded');
});
test('Visualization Page Screenshots', async ({ page }) => {
test.setTimeout(120000);
await login(page);
// Navigate to Visualization section
await page.getByText('Visualization', { exact: true }).click();
await page.waitForLoadState('networkidle');
await takeScreenshotsAtViewports(page, 'Visualization-screenshots/Visualization-page1-loaded', 'Visualization1-page-loaded');
await page.locator('.toggle-header-item:has-text("3D")').click();
await takeScreenshotsAtViewports(page, 'Visualization-screenshots/Visualization-page1-loaded', 'Visualization1-page-loaded-3D');
await page.locator('.toggle-header-item:has-text("Floating")').click();
await takeScreenshotsAtViewports(page, 'Visualization-screenshots/Visualization-page1-loaded', 'Visualization1-page-loaded-Floating');
await page.locator('.toggle-header-item:has-text("Templates")').click();
await takeScreenshotsAtViewports(page, 'Visualization-screenshots/Visualization-page2-loaded', 'Visualization2-page-loaded');
});
test('Market Place Page Screenshots', async ({ page }) => {
test.setTimeout(120000);
await login(page);
// Navigate to Market Place section
await page.getByText('Market Place', { exact: true }).click();
await page.waitForLoadState('networkidle');
await takeScreenshotsAtViewports(page, 'market-place-screenshots/Market-Place-page-loaded', 'Market-Place-page-loaded');
});