playwright-test-automator / sample_test.spec.js
qamax's picture
Upload sample_test.spec.js with huggingface_hub
5fafb41 verified
raw
history blame contribute delete
3.39 kB
// The The-internet E2E Test
// Automated test for The-internet
// Auto-generated from crawl data on 2025-04-10 21:25:36
import { test, expect } from '@playwright/test';
test('The The-internet E2E Test', async ({ page }) => {
// Configure viewport for better element visibility
await page.setViewportSize({ width: 1280, height: 800 });
// Helper function for safer element interactions
async function safeClick(selector, description) {
console.log(`Attempting to click ${description}...`);
try {
// First check if element exists and is visible
const element = page.locator(selector);
const isVisible = await element.isVisible().catch(() => false);
if (!isVisible) {
console.log(`Element ${description} is not visible, skipping`);
return false;
}
// Always scroll before clicking - critical for elements outside viewport
await element.scrollIntoViewIfNeeded();
await page.waitForTimeout(500); // Small wait after scrolling
// Now click the element
await element.click();
console.log(`Successfully clicked ${description}`);
await page.waitForTimeout(1000); // Wait after click
return true;
} catch (e) {
console.log(`Could not click ${description}: ${e.message}`);
return false;
}
}
// Navigate to the application
console.log('Navigating to application...');
await page.goto('https://the-internet.herokuapp.com/login');
// Verify the page loaded correctly
await expect(page).toHaveTitle(/^The.*$/);
// Login process
console.log('Performing login...');
await page.fill("input[type='text'][name*='user']", "tomsmith");
await page.fill("input[type='password']", "SuperSecretPassword!");
// Click the submit button with safety checks
await safeClick("button[type='submit']", "login button");
// Verify successful login
await page.waitForTimeout(2000); // Wait for navigation
try {
// Look for common login success indicators
// 1. URL changes to include secure, account, dashboard, profile, etc.
const currentUrl = page.url();
console.log('Post-login URL: ' + currentUrl);
// 2. Text indicating successful login (welcome, logged in, etc.)
const pageContent = await page.content();
const loggedInIndicators = ['welcome', 'logged in', 'sign out', 'logout', 'account'];
let foundIndicator = false;
for (const indicator of loggedInIndicators) {
if (pageContent.toLowerCase().includes(indicator)) {
foundIndicator = true;
console.log('Found login success indicator: ' + indicator);
break;
}
}
// If found indicators, assert successful login
if (foundIndicator) {
expect(true).toBeTruthy(); // Successfully found login indicators
} else {
console.log('Warning: Could not find clear login success indicators');
}
} catch (e) {
console.log('Error checking login status: ' + e);
}
// Explore the application - click on main menu items
console.log('Exploring application navigation...');
// Interact with Login
await safeClick("form#login > button", "Login");
// Interact with Elemental Selenium
await safeClick("div#page-footer > div > div > a", "Elemental Selenium");
// Take a screenshot for verification
await page.screenshot({ path: 'test-result-screenshot.png' });
});