dwinzo-sdet/tests/screenshot.spec.js

119 lines
5.5 KiB
JavaScript

const { test, expect } = require('@playwright/test');
const fs = require('fs');
const path = require('path');
// Function to take screenshots at different viewport sizes for a given URL
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' },
];
// Create the folder if it doesn't exist (Node.js context)
const folderPath = path.join(__dirname, '..', 'test-results', folderName);
if (!fs.existsSync(folderPath)) {
fs.mkdirSync(folderPath, { recursive: true });
}
for (const { width, height, name } of viewports) {
await page.setViewportSize({ width, height });
await page.waitForTimeout(500); // Allow time for the viewport to adjust
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}`);
}
}
test('Login Page Screenshots', async ({ page }) => {
test.setTimeout(60000); // Increase timeout to 60 seconds
const url = 'http://185.100.212.76:8200';
const folderName = 'login-screenshots';
try {
console.log('Navigating to the login page...');
await page.goto(url, { waitUntil: 'networkidle' });
await page.waitForSelector('[placeholder="Email"]', { timeout: 10000 });
await takeScreenshotsAtViewports(page, `${folderName}/login-page-loaded`, 'login-page-loaded');
console.log('Filling Email and Password fields...');
await page.getByPlaceholder('Email').click();
await page.getByPlaceholder('Email').fill('ramkumar@tester.local');
await page.getByPlaceholder('Password').click();
await page.getByPlaceholder('Password').fill('123456');
await takeScreenshotsAtViewports(page, `${folderName}/fields-filled`, 'fields-filled');
console.log('Clicking the Continue button...');
await page.waitForSelector('button:has-text("Continue")', { timeout: 10000 });
await page.getByRole('button', { name: 'Continue', exact: true }).click();
await page.waitForLoadState('networkidle'); // Wait for navigation or animations to complete
await takeScreenshotsAtViewports(page, `${folderName}/after-login`, 'after-login');
} catch (error) {
console.error('An error occurred during the test:', error.message);
throw error; // Re-throw the error to fail the test
}
});
test('simulation Page Screenshots', async ({ page }) => {{
const folderName = 'simulation-screenshots';
await page.goto('http://185.100.212.76:8200');
await page.getByPlaceholder('Email').fill('ramkumar@tester.local');
await page.getByPlaceholder('Password').fill('123456');
await page.waitForSelector('button:has-text("Continue")', { timeout: 10000 });
await page.getByRole('button', { name: 'Continue', exact: true }).click();
await page.waitForTimeout(10000); // Wait for the page to load
await page.getByText('Simulation').click();
await page.waitForTimeout(4000);
await takeScreenshotsAtViewports(page, `${folderName}/simulation-page-loaded`, 'simulation-page-loaded');
}
});
test('Visualization Page Screenshots', async ({ page }) => {
const folderName = 'Visualization-screenshots';
// Navigate to the login page and log in
await page.goto('http://185.100.212.76:8200');
await page.getByPlaceholder('Email').fill('ramkumar@tester.local');
await page.getByPlaceholder('Password').fill('123456');
await page.waitForSelector('button:has-text("Continue")', { timeout: 10000 });
await page.getByRole('button', { name: 'Continue', exact: true }).click();
// Navigate to the Visualization page
await page.waitForTimeout(10000); // Wait for the page to load
await page.getByText('Visualization').click();
await page.waitForTimeout(4000); // Wait for the page to load
await takeScreenshotsAtViewports(page, `${folderName}/Visualization-page1-loaded`, 'Visualization1-page-loaded');
await page.locator('.toggle-header-item:has-text("3D")').click(); // Use a more specific selector
await takeScreenshotsAtViewports(page, `${folderName}/Visualization-page1-loaded`, 'Visualization1-page-loaded-3D');
await page.locator('.toggle-header-item:has-text("Floating")').click(); // Use a more specific selector
await takeScreenshotsAtViewports(page, `${folderName}/Visualization-page1-loaded`, 'Visualization1-page-loaded-Floating');
// Navigate to Templates and Design pages
await page.locator('.toggle-header-item:has-text("Templates")').click(); // Use a more specific selector
await takeScreenshotsAtViewports(page, `${folderName}/Visualization-page2-loaded`, 'Visualization2-page-loaded');
});
test('Market-Place Page Screenshots', async ({ page }) => {{
const folderName = 'simulation-screenshots';
await page.goto('http://185.100.212.76:8200');
await page.getByPlaceholder('Email').fill('ramkumar@tester.local');
await page.getByPlaceholder('Password').fill('123456');
await page.waitForSelector('button:has-text("Continue")', { timeout: 10000 });
await page.getByRole('button', { name: 'Continue', exact: true }).click();
await page.waitForTimeout(10000); // Wait for the page to load
await page.getByText('Market Place').click();
await page.waitForTimeout(4000);
await takeScreenshotsAtViewports(page, `${folderName}/Market-Place-page-loaded`, 'Market-Place-page-loaded');
}
});