qamax commited on
Commit
5fafb41
·
verified ·
1 Parent(s): 84c7aec

Upload sample_test.spec.js with huggingface_hub

Browse files
Files changed (1) hide show
  1. sample_test.spec.js +91 -0
sample_test.spec.js ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // The The-internet E2E Test
2
+ // Automated test for The-internet
3
+ // Auto-generated from crawl data on 2025-04-10 21:25:36
4
+
5
+ import { test, expect } from '@playwright/test';
6
+
7
+ test('The The-internet E2E Test', async ({ page }) => {
8
+ // Configure viewport for better element visibility
9
+ await page.setViewportSize({ width: 1280, height: 800 });
10
+
11
+ // Helper function for safer element interactions
12
+ async function safeClick(selector, description) {
13
+ console.log(`Attempting to click ${description}...`);
14
+ try {
15
+ // First check if element exists and is visible
16
+ const element = page.locator(selector);
17
+ const isVisible = await element.isVisible().catch(() => false);
18
+
19
+ if (!isVisible) {
20
+ console.log(`Element ${description} is not visible, skipping`);
21
+ return false;
22
+ }
23
+
24
+ // Always scroll before clicking - critical for elements outside viewport
25
+ await element.scrollIntoViewIfNeeded();
26
+ await page.waitForTimeout(500); // Small wait after scrolling
27
+
28
+ // Now click the element
29
+ await element.click();
30
+ console.log(`Successfully clicked ${description}`);
31
+ await page.waitForTimeout(1000); // Wait after click
32
+ return true;
33
+ } catch (e) {
34
+ console.log(`Could not click ${description}: ${e.message}`);
35
+ return false;
36
+ }
37
+ }
38
+
39
+ // Navigate to the application
40
+ console.log('Navigating to application...');
41
+ await page.goto('https://the-internet.herokuapp.com/login');
42
+
43
+ // Verify the page loaded correctly
44
+ await expect(page).toHaveTitle(/^The.*$/);
45
+
46
+ // Login process
47
+ console.log('Performing login...');
48
+ await page.fill("input[type='text'][name*='user']", "tomsmith");
49
+ await page.fill("input[type='password']", "SuperSecretPassword!");
50
+ // Click the submit button with safety checks
51
+ await safeClick("button[type='submit']", "login button");
52
+
53
+ // Verify successful login
54
+ await page.waitForTimeout(2000); // Wait for navigation
55
+ try {
56
+ // Look for common login success indicators
57
+ // 1. URL changes to include secure, account, dashboard, profile, etc.
58
+ const currentUrl = page.url();
59
+ console.log('Post-login URL: ' + currentUrl);
60
+ // 2. Text indicating successful login (welcome, logged in, etc.)
61
+ const pageContent = await page.content();
62
+ const loggedInIndicators = ['welcome', 'logged in', 'sign out', 'logout', 'account'];
63
+ let foundIndicator = false;
64
+ for (const indicator of loggedInIndicators) {
65
+ if (pageContent.toLowerCase().includes(indicator)) {
66
+ foundIndicator = true;
67
+ console.log('Found login success indicator: ' + indicator);
68
+ break;
69
+ }
70
+ }
71
+ // If found indicators, assert successful login
72
+ if (foundIndicator) {
73
+ expect(true).toBeTruthy(); // Successfully found login indicators
74
+ } else {
75
+ console.log('Warning: Could not find clear login success indicators');
76
+ }
77
+ } catch (e) {
78
+ console.log('Error checking login status: ' + e);
79
+ }
80
+
81
+ // Explore the application - click on main menu items
82
+ console.log('Exploring application navigation...');
83
+ // Interact with Login
84
+ await safeClick("form#login > button", "Login");
85
+
86
+ // Interact with Elemental Selenium
87
+ await safeClick("div#page-footer > div > div > a", "Elemental Selenium");
88
+
89
+ // Take a screenshot for verification
90
+ await page.screenshot({ path: 'test-result-screenshot.png' });
91
+ });