Skip to content

Commit 274d05b

Browse files
committed
added ios cases updated existing tests:logs updated readme
1 parent 4d6d7f3 commit 274d05b

11 files changed

+826
-163
lines changed

README.md

Lines changed: 302 additions & 113 deletions
Large diffs are not rendered by default.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
"node": ">=12.7.0"
1414
},
1515
"devDependencies": {
16+
"@cucumber/cucumber": "^7.3.2",
1617
"@playwright/test": "^1.35.0",
18+
"expect": "^29.5.0",
1719
"playwright": "^1.35.0",
18-
"@cucumber/cucumber": "^7.3.2",
19-
"expect": "^29.5.0"
20+
"dotenv": "^16.0.3"
2021
}
2122
}

playwright-android-real-device.js

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
1+
require('dotenv').config();
12
const {_android} = require("playwright");
23
const {expect} = require("expect");
34

45
(async () => {
6+
console.log('🤖 Starting Playwright Android Real Device test...');
7+
console.log('📱 Device: Galaxy S21 5G (Android 12)');
8+
59
const capabilities = {
610
"LT:Options": {
711
"platformName": "android",
@@ -19,43 +23,77 @@ const {expect} = require("expect");
1923
},
2024
};
2125

26+
console.log('🔗 Connecting to LambdaTest Android cloud...');
27+
console.log('👤 Username:', process.env.LT_USERNAME);
28+
console.log('📱 Platform: Android 12, Device: Galaxy S21 5G');
29+
2230
let device = await _android.connect(
2331
`wss://cdp.lambdatest.com/playwright?capabilities=${encodeURIComponent(
2432
JSON.stringify(capabilities))}`,
2533
);
2634

27-
console.log(`Model:: ${device.model()}, serial:: ${device.serial()}`);
35+
console.log('✅ Connected to Android device successfully!');
36+
console.log(`📱 Device Model: ${device.model()}, Serial: ${device.serial()}`);
2837

38+
console.log('🛑 Force stopping Chrome browser...');
2939
await device.shell("am force-stop com.android.chrome");
3040

41+
console.log('🚀 Launching Chrome browser...');
3142
let context = await device.launchBrowser();
3243
let page = await context.newPage();
3344

45+
console.log('🔍 Navigating to DuckDuckGo...');
3446
await page.goto("https://duckduckgo.com");
47+
48+
console.log('🔍 Finding search box...');
3549
let element = await page.locator("[name=\"q\"]");
50+
51+
console.log('👆 Clicking search box...');
3652
await element.click();
53+
54+
console.log('⌨️ Typing "Playwright"...');
3755
await element.type("Playwright");
56+
57+
console.log('⏎ Pressing Enter...');
3858
await element.press("Enter");
59+
60+
console.log('⏳ Waiting for search results...');
3961
let title = await page.title();
62+
console.log('📄 Page title:', title);
4063

4164
try {
65+
console.log('🧪 Verifying title contains "Playwright"...');
4266
expect(title).toEqual("Playwright at DuckDuckGo");
67+
console.log('✅ Android Test PASSED! Title matched successfully');
68+
4369
// Mark the test as completed or failed
4470
await page.evaluate(_ => {}, `lambdatest_action: ${JSON.stringify({ action: "setTestStatus", arguments: {status: "passed", remark: "Assertions passed" },})}`);
71+
console.log('📊 Marked test as PASSED in LambdaTest dashboard');
72+
4573
await teardown(page, context, device)
4674
} catch (e) {
75+
console.log('❌ Android Test FAILED!');
76+
console.log('💥 Error:', e.message);
77+
console.log('📊 Expected title: "Playwright at DuckDuckGo"');
78+
console.log('📊 Actual title:', title);
79+
4780
await page.evaluate(_ => {}, `lambdatest_action: ${JSON.stringify({action: "setTestStatus", arguments: { status: "failed", remark: e.stack }})}`);
81+
console.log('📊 Marked test as FAILED in LambdaTest dashboard');
82+
4883
await teardown(page, context, device)
4984
throw e.stack
5085
}
5186

52-
})();
87+
})().catch(err => {
88+
console.error('💥 Unexpected error occurred in Android test:');
89+
console.error(err);
90+
process.exit(1);
91+
});
5392

5493
async function teardown(page, context, device) {
94+
console.log('🧹 Cleaning up Android test resources...');
5595
await page.close();
5696
await context.close();
5797
await device.close();
58-
}
59-
60-
61-
98+
console.log('✅ Android test completed and resources cleaned up!');
99+
}

playwright-extensions-test.js

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1+
require('dotenv').config();
12
const {chromium} = require("playwright");
23
const {expect} = require("expect");
34
const cp = require('child_process');
45
const playwrightClientVersion = cp.execSync('npx playwright --version').toString().trim().split(' ')[1];
56

67
(async () => {
8+
console.log('🔌 Starting Playwright Extensions test...');
9+
console.log('📋 Playwright version:', playwrightClientVersion);
10+
console.log('🌐 Platform: Windows 10, Browser: Chrome with Extensions');
11+
712
let browser;
813
try {
914
const capabilities = {
@@ -29,43 +34,78 @@ const playwrightClientVersion = cp.execSync('npx playwright --version').toString
2934
},
3035
};
3136

37+
console.log('🔗 Connecting to LambdaTest...');
38+
console.log('👤 Username:', process.env.LT_USERNAME);
39+
console.log('🔌 Loading extension: hello-world-1.0.0.zip');
40+
3241
browser = await chromium.connectOverCDP(
3342
`wss://cdp.lambdatest.com/playwright-cdp?capabilities=${encodeURIComponent(JSON.stringify(capabilities))}`
3443
);
3544

45+
console.log('✅ Connected to LambdaTest successfully!');
46+
console.log('🧩 Getting default browser context...');
47+
3648
const defaultContext = browser.contexts()[0];
3749
const page = defaultContext.pages()[1];
3850

51+
console.log('🔍 Navigating to Chrome Extensions page...');
3952
await page.goto("chrome://extensions/")
4053
await page.waitForTimeout(1000)
4154

55+
console.log('🔍 Finding extension service worker...');
4256
let [background] = defaultContext.serviceWorkers();
43-
if (!background)
57+
if (!background) {
58+
console.log('⏳ Waiting for service worker...');
4459
background = await defaultContext.waitForEvent("serviceworker");
60+
}
61+
4562
const extensionId = background.url().split("/")[2];
46-
console.log("ExtensionId:: ", extensionId);
63+
console.log("✅ Extension loaded successfully!");
64+
console.log("🆔 Extension ID:", extensionId);
4765

66+
console.log('🔍 Navigating to extension page...');
4867
await page.goto(`chrome-extension://${extensionId}/hello.html`)
4968
await page.waitForTimeout(1000)
5069

70+
console.log('📄 Reading extension content...');
5171
let text = await (await page.locator("body > p")).textContent();
72+
console.log('📝 Extension text:', text);
5273

5374
try {
75+
console.log('🧪 Verifying extension content...');
5476
expect(text).toEqual('Hello, World!')
77+
console.log('✅ Extensions Test PASSED! Content matched successfully');
78+
5579
// Mark the test as completed or failed
5680
await page.evaluate(_ => {}, `lambdatest_action: ${JSON.stringify({ action: 'setTestStatus', arguments: { status: 'passed', remark: 'Data matched' } })}`)
81+
console.log('📊 Marked test as PASSED in LambdaTest dashboard');
82+
5783
} catch (e) {
84+
console.log('❌ Extensions Test FAILED!');
85+
console.log('💥 Error:', e.message);
86+
console.log('📊 Expected text: "Hello, World!"');
87+
console.log('📊 Actual text:', text);
88+
5889
await page.evaluate(_ => {}, `lambdatest_action: ${JSON.stringify({ action: 'setTestStatus', arguments: { status: 'failed', remark: e.stack } })}`)
90+
console.log('📊 Marked test as FAILED in LambdaTest dashboard');
5991
}
6092

6193
await teardown(page, browser)
6294
} catch (e) {
95+
console.log('💥 Unexpected error occurred in Extensions test:');
96+
console.error(e);
6397
await teardown(page, browser)
6498
throw e
6599
}
66-
})();
100+
})().catch(err => {
101+
console.error('💥 Fatal error in Extensions test:');
102+
console.error(err);
103+
process.exit(1);
104+
});
67105

68106
async function teardown(page, browser) {
107+
console.log('🧹 Cleaning up Extensions test resources...');
69108
await page.close();
70109
await browser.close();
110+
console.log('✅ Extensions test completed and resources cleaned up!');
71111
}

playwright-ios-real-device.js

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
require('dotenv').config();
2+
const { webkit } = require("playwright");
3+
const { expect } = require("expect");
4+
5+
(async () => {
6+
console.log('🍎 Starting Playwright iOS Real Device test...');
7+
console.log('📱 Device: iPhone 16 (iOS 18)');
8+
9+
const capabilities = {
10+
"LT:Options": {
11+
"platformName": "ios",
12+
"deviceName": "iPhone 16",
13+
"platformVersion": "18",
14+
"isRealMobile": true,
15+
"build": "Playwright iOS Build",
16+
"name": "Playwright iOS test",
17+
"user": process.env.LT_USERNAME,
18+
"accessKey": process.env.LT_ACCESS_KEY,
19+
"network": true,
20+
"video": true,
21+
"console": true,
22+
"projectName": "New UI",
23+
},
24+
};
25+
26+
console.log('🔗 Connecting to LambdaTest iOS cloud...');
27+
console.log('👤 Username:', process.env.LT_USERNAME);
28+
console.log('📱 Platform: iOS 18, Device: iPhone 16');
29+
30+
let browser = await webkit.connect(
31+
`wss://cdp.lambdatest.com/playwright?capabilities=${encodeURIComponent(
32+
JSON.stringify(capabilities))}`,
33+
);
34+
35+
console.log('✅ Connected to iOS device successfully!');
36+
console.log(`📱 Device: iPhone 16, iOS 18`);
37+
38+
console.log('🚀 Creating browser context...');
39+
let context = await browser.newContext({
40+
hasTouch: true, // Enable touch support for iOS
41+
isMobile: true // Enable mobile mode for iOS
42+
});
43+
let page = await context.newPage();
44+
45+
console.log('🔍 Navigating to Wikipedia...');
46+
await page.goto('https://www.wikipedia.org/', { timeout: 30000 });
47+
48+
console.log('🔍 Finding search input...');
49+
let element = await page.locator('input[name="search"]');
50+
51+
console.log('👆 Clicking search input...');
52+
await element.click();
53+
54+
console.log('⌨️ Typing "playwright"...');
55+
await element.fill('playwright');
56+
57+
console.log('👆 Clicking search input again...');
58+
await element.click();
59+
60+
console.log('🔗 Current URL:', await page.url());
61+
62+
console.log('🔍 Finding and clicking search button...');
63+
await page.locator('#search-form > fieldset > button').click();
64+
65+
console.log('⏳ Waiting for search results...');
66+
await page.waitForTimeout(3000);
67+
68+
console.log('🔍 Counting occurrences of "19th century"...');
69+
const count = await page.getByText('19th century').count();
70+
console.log('📊 Found', count, 'occurrences of "19th century"');
71+
72+
try {
73+
console.log('🧪 Verifying count...');
74+
expect(count).toEqual(3);
75+
console.log('✅ iOS Test PASSED!');
76+
77+
// Mark the test as completed or failed
78+
await page.evaluate(_ => {}, `lambdatest_action: ${JSON.stringify({ action: "setTestStatus", arguments: {status: "passed", remark: "Wikipedia test passed - found 3 occurrences of '19th century'" },})}`);
79+
console.log('📊 Marked test as PASSED in LambdaTest dashboard');
80+
81+
await teardown(page, context, browser)
82+
} catch (e) {
83+
console.log('❌ iOS Test FAILED!');
84+
console.log('💥 Error:', e.message);
85+
console.log('📊 Expected: 3 occurrences of "19th century"');
86+
console.log('📊 Actual count:', count);
87+
88+
await page.evaluate(_ => {}, `lambdatest_action: ${JSON.stringify({action: "setTestStatus", arguments: { status: "failed", remark: e.message }})}`);
89+
console.log('📊 Marked test as FAILED in LambdaTest dashboard');
90+
91+
await teardown(page, context, browser)
92+
throw e.stack
93+
}
94+
95+
})().catch(err => {
96+
console.error('💥 Unexpected error occurred in iOS test:');
97+
console.error(err);
98+
process.exit(1);
99+
});
100+
101+
async function teardown(page, context, browser) {
102+
console.log('🧹 Cleaning up iOS test resources...');
103+
try {
104+
console.log(' Closing page...');
105+
await Promise.race([
106+
page.close(),
107+
new Promise(resolve => setTimeout(resolve, 10000)) // 10 second timeout
108+
]);
109+
console.log(' ✅ Page closed');
110+
111+
console.log(' Closing context...');
112+
await Promise.race([
113+
context.close(),
114+
new Promise(resolve => setTimeout(resolve, 10000)) // 10 second timeout
115+
]);
116+
console.log(' ✅ Context closed');
117+
118+
console.log(' Closing browser connection...');
119+
await Promise.race([
120+
browser.close(),
121+
new Promise(resolve => setTimeout(resolve, 15000)) // 15 second timeout for browser
122+
]);
123+
console.log(' ✅ Browser closed');
124+
125+
console.log('✅ iOS test completed and resources cleaned up!');
126+
} catch (error) {
127+
console.log('⚠️ Cleanup completed with warnings:', error.message);
128+
}
129+
process.exit(0);
130+
}

0 commit comments

Comments
 (0)