Skip to content

Commit cb16eb6

Browse files
feat: add BrowserStack integration config - ready for Automate plan
1 parent 1289214 commit cb16eb6

37 files changed

Lines changed: 1101 additions & 3 deletions
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Instructions
2+
3+
- Following Playwright test failed.
4+
- Explain why, be concise, respect Playwright best practices.
5+
- Provide a snippet of code with the fix, if possible.
6+
7+
# Test info
8+
9+
- Name: web\browserstack.spec.ts >> @web @browserstack BrowserStack Cross-Browser Tests >> should run login page test on BrowserStack Chrome
10+
- Location: tests\web\browserstack.spec.ts:16:7
11+
12+
# Error details
13+
14+
```
15+
Error: browserType.connectOverCDP: Target page, context or browser has been closed
16+
Browser logs:
17+
18+
Error: Invalid username or password
19+
20+
Call log:
21+
- <ws connecting> wss://cdp.browserstack.com/playwright
22+
- <ws connected> wss://cdp.browserstack.com/playwright
23+
- <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password
24+
25+
```
26+
27+
# Test source
28+
29+
```ts
30+
1 | import { test, expect, chromium } from '@playwright/test'
31+
2 | import { browserstackConfig } from '../../config/browserstack/capabilities'
32+
3 | import { HomePage } from '../../src/web/pages'
33+
4 | import { LoginPage } from '../../src/web/pages'
34+
5 |
35+
6 | const BASE_URL = 'https://automationexercise.com'
36+
7 |
37+
8 | const isBS = process.env.ENV === 'browserstack'
38+
9 | && !!process.env.BROWSERSTACK_USERNAME
39+
10 | && !!process.env.BROWSERSTACK_ACCESS_KEY
40+
11 |
41+
12 | test.describe('@web @browserstack BrowserStack Cross-Browser Tests', () => {
42+
13 |
43+
14 | test.skip(!isBS, 'Skipping BrowserStack tests - set ENV=browserstack to run')
44+
15 |
45+
16 | test('should run login page test on BrowserStack Chrome', async () => {
46+
17 | const capabilities = {
47+
18 | browser: 'chrome',
48+
19 | browser_version: 'latest',
49+
20 | os: 'Windows',
50+
21 | os_version: '11',
51+
22 | 'browserstack.username': browserstackConfig.username,
52+
23 | 'browserstack.accessKey': browserstackConfig.accessKey,
53+
24 | name: 'Login Page Test - Chrome',
54+
25 | build: 'QA Multipurpose Framework - Build 1',
55+
26 | project: 'qa-multipurpose-framework',
56+
27 | }
57+
28 |
58+
29 | const cdpUrl = browserstackConfig.getCdpUrl(capabilities)
59+
> 30 | const browser = await chromium.connectOverCDP(cdpUrl)
60+
| ^ Error: browserType.connectOverCDP: Target page, context or browser has been closed
61+
31 | const context = await browser.newContext()
62+
32 | const page = await context.newPage()
63+
33 |
64+
34 | try {
65+
35 | const loginPage = new LoginPage(page, BASE_URL)
66+
36 | await loginPage.navigate()
67+
37 | const isVisible = await loginPage.isLoginFormVisible()
68+
38 | expect(isVisible).toBeTruthy()
69+
39 |
70+
40 | const homePage = new HomePage(page, BASE_URL)
71+
41 | await homePage.navigate()
72+
42 | const isNavVisible = await homePage.isNavbarVisible()
73+
43 | expect(isNavVisible).toBeTruthy()
74+
44 | } finally {
75+
45 | await page.close()
76+
46 | await context.close()
77+
47 | await browser.close()
78+
48 | }
79+
49 | })
80+
50 | })
81+
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"uuid":"4df0df98-4294-4295-a06d-d628a3d6fc49","name":"should run login page test on BrowserStack Chrome","historyId":"810a39f9fda690e4d1df7b7c5037ac50:5bd835b0d6b1d4ada3b9f0db936e82c8","status":"failed","statusDetails":{"message":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n","trace":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n\n at C:\\Users\\axelr\\qa-multipurpose-framework\\tests\\web\\browserstack.spec.ts:30:36"},"stage":"finished","steps":[{"status":"passed","statusDetails":{},"stage":"finished","steps":[],"attachments":[],"parameters":[],"name":"Before Hooks","start":1779141170339,"uuid":"e8292c2c-5088-4f1b-8390-a5e93c94f17a","stop":1779141170347},{"status":"failed","statusDetails":{"message":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n","trace":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n\n at C:\\Users\\axelr\\qa-multipurpose-framework\\tests\\web\\browserstack.spec.ts:30:36"},"stage":"finished","steps":[],"attachments":[],"parameters":[],"start":1779141170349,"name":"Connect over CDP","uuid":"e2d6d3cf-a0d9-47d5-9993-4f7d4fbc0a72","stop":1779141172432},{"statusDetails":{},"stage":"finished","steps":[],"attachments":[{"name":"error-context","source":"ab5b18cd-9524-471d-8ea9-ac785e752d87-attachment.md","type":"text/markdown"}],"parameters":[],"start":1779141172464,"name":"error-context","stop":1779141172464},{"statusDetails":{},"stage":"finished","steps":[],"attachments":[{"name":"trace","source":"673b0f83-f371-42d5-9af9-a7dce8260424-attachment.zip","type":"application/vnd.allure.playwright-trace"}],"parameters":[],"start":1779141172465,"name":"trace","stop":1779141172465},{"status":"passed","statusDetails":{},"stage":"finished","steps":[],"attachments":[],"parameters":[],"name":"After Hooks","start":1779141172433,"uuid":"899a3835-b8bd-4925-9fd0-10ed65eff4ad","stop":1779141172446}],"attachments":[],"parameters":[{"name":"Project","value":"chromium"}],"labels":[{"name":"language","value":"javascript"},{"name":"framework","value":"playwright"},{"name":"package","value":"web.browserstack.spec.ts"},{"name":"titlePath","value":" > chromium > web\\browserstack.spec.ts > @web @browserstack BrowserStack Cross-Browser Tests"},{"name":"tag","value":"web"},{"name":"tag","value":"browserstack"},{"name":"host","value":"Vladimir"},{"name":"thread","value":"pid-13276-worker-0"},{"name":"parentSuite","value":"chromium"},{"name":"suite","value":"web\\browserstack.spec.ts"},{"name":"subSuite","value":"@web @browserstack BrowserStack Cross-Browser Tests"}],"links":[],"start":1779141170326,"testCaseId":"810a39f9fda690e4d1df7b7c5037ac50","fullName":"web/browserstack.spec.ts:16:7","titlePath":["web","browserstack.spec.ts","@web @browserstack BrowserStack Cross-Browser Tests"],"stop":1779141172414}
Binary file not shown.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Instructions
2+
3+
- Following Playwright test failed.
4+
- Explain why, be concise, respect Playwright best practices.
5+
- Provide a snippet of code with the fix, if possible.
6+
7+
# Test info
8+
9+
- Name: web\browserstack.spec.ts >> @web @browserstack BrowserStack Cross-Browser Tests >> should run login page test on BrowserStack Chrome
10+
- Location: tests\web\browserstack.spec.ts:16:7
11+
12+
# Error details
13+
14+
```
15+
Error: browserType.connectOverCDP: Target page, context or browser has been closed
16+
Browser logs:
17+
18+
Error: Invalid username or password
19+
20+
Call log:
21+
- <ws connecting> wss://cdp.browserstack.com/playwright
22+
- <ws connected> wss://cdp.browserstack.com/playwright
23+
- <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password
24+
25+
```
26+
27+
# Test source
28+
29+
```ts
30+
1 | import { test, expect, chromium } from '@playwright/test'
31+
2 | import { browserstackConfig } from '../../config/browserstack/capabilities'
32+
3 | import { HomePage } from '../../src/web/pages'
33+
4 | import { LoginPage } from '../../src/web/pages'
34+
5 |
35+
6 | const BASE_URL = 'https://automationexercise.com'
36+
7 |
37+
8 | const isBS = process.env.ENV === 'browserstack'
38+
9 | && !!process.env.BROWSERSTACK_USERNAME
39+
10 | && !!process.env.BROWSERSTACK_ACCESS_KEY
40+
11 |
41+
12 | test.describe('@web @browserstack BrowserStack Cross-Browser Tests', () => {
42+
13 |
43+
14 | test.skip(!isBS, 'Skipping BrowserStack tests - set ENV=browserstack to run')
44+
15 |
45+
16 | test('should run login page test on BrowserStack Chrome', async () => {
46+
17 | const capabilities = {
47+
18 | browser: 'chrome',
48+
19 | browser_version: 'latest',
49+
20 | os: 'Windows',
50+
21 | os_version: '11',
51+
22 | 'browserstack.username': browserstackConfig.username,
52+
23 | 'browserstack.accessKey': browserstackConfig.accessKey,
53+
24 | name: 'Login Page Test - Chrome',
54+
25 | build: 'QA Multipurpose Framework - Build 1',
55+
26 | project: 'qa-multipurpose-framework',
56+
27 | }
57+
28 |
58+
29 | const cdpUrl = browserstackConfig.getCdpUrl(capabilities)
59+
> 30 | const browser = await chromium.connectOverCDP(cdpUrl)
60+
| ^ Error: browserType.connectOverCDP: Target page, context or browser has been closed
61+
31 | const context = await browser.newContext()
62+
32 | const page = await context.newPage()
63+
33 |
64+
34 | try {
65+
35 | const loginPage = new LoginPage(page, BASE_URL)
66+
36 | await loginPage.navigate()
67+
37 | const isVisible = await loginPage.isLoginFormVisible()
68+
38 | expect(isVisible).toBeTruthy()
69+
39 |
70+
40 | const homePage = new HomePage(page, BASE_URL)
71+
41 | await homePage.navigate()
72+
42 | const isNavVisible = await homePage.isNavbarVisible()
73+
43 | expect(isNavVisible).toBeTruthy()
74+
44 | } finally {
75+
45 | await page.close()
76+
46 | await context.close()
77+
47 | await browser.close()
78+
48 | }
79+
49 | })
80+
50 | })
81+
```
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"uuid":"8cf620a3-16c7-4490-8c3c-5e9e68f55d1d","name":"should run login page test on BrowserStack Chrome","historyId":"810a39f9fda690e4d1df7b7c5037ac50:5bd835b0d6b1d4ada3b9f0db936e82c8","status":"failed","statusDetails":{"message":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n","trace":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n\n at C:\\Users\\axelr\\qa-multipurpose-framework\\tests\\web\\browserstack.spec.ts:30:36"},"stage":"finished","steps":[{"status":"passed","statusDetails":{},"stage":"finished","steps":[],"attachments":[],"parameters":[],"name":"Before Hooks","start":1779141224522,"uuid":"16349c8f-9fdb-428c-9a1f-1f60bcc5183b","stop":1779141224530},{"status":"failed","statusDetails":{"message":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n","trace":"Error: browserType.connectOverCDP: Target page, context or browser has been closed\nBrowser logs:\n\nError: Invalid username or password\n\nCall log:\n - <ws connecting> wss://cdp.browserstack.com/playwright\n - <ws connected> wss://cdp.browserstack.com/playwright\n - <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password\n\n at C:\\Users\\axelr\\qa-multipurpose-framework\\tests\\web\\browserstack.spec.ts:30:36"},"stage":"finished","steps":[],"attachments":[],"parameters":[],"start":1779141224532,"name":"Connect over CDP","uuid":"52df25fc-fc66-446b-98ff-5ce0277b855d","stop":1779141226407},{"statusDetails":{},"stage":"finished","steps":[],"attachments":[{"name":"error-context","source":"6e41c300-6310-4247-964c-df84bdc3ccb3-attachment.md","type":"text/markdown"}],"parameters":[],"start":1779141226455,"name":"error-context","stop":1779141226455},{"statusDetails":{},"stage":"finished","steps":[],"attachments":[{"name":"trace","source":"b5e6ce8d-2dad-4922-81aa-09f8a59cf671-attachment.zip","type":"application/vnd.allure.playwright-trace"}],"parameters":[],"start":1779141226457,"name":"trace","stop":1779141226457},{"status":"passed","statusDetails":{},"stage":"finished","steps":[],"attachments":[],"parameters":[],"name":"After Hooks","start":1779141226408,"uuid":"6bd0bea2-a351-4ad5-9a5c-d7d80dedd632","stop":1779141226426}],"attachments":[],"parameters":[{"name":"Project","value":"chromium"}],"labels":[{"name":"language","value":"javascript"},{"name":"framework","value":"playwright"},{"name":"package","value":"web.browserstack.spec.ts"},{"name":"titlePath","value":" > chromium > web\\browserstack.spec.ts > @web @browserstack BrowserStack Cross-Browser Tests"},{"name":"tag","value":"web"},{"name":"tag","value":"browserstack"},{"name":"host","value":"Vladimir"},{"name":"thread","value":"pid-33644-worker-0"},{"name":"parentSuite","value":"chromium"},{"name":"suite","value":"web\\browserstack.spec.ts"},{"name":"subSuite","value":"@web @browserstack BrowserStack Cross-Browser Tests"}],"links":[],"start":1779141224504,"testCaseId":"810a39f9fda690e4d1df7b7c5037ac50","fullName":"web/browserstack.spec.ts:16:7","titlePath":["web","browserstack.spec.ts","@web @browserstack BrowserStack Cross-Browser Tests"],"stop":1779141226384}
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# Instructions
2+
3+
- Following Playwright test failed.
4+
- Explain why, be concise, respect Playwright best practices.
5+
- Provide a snippet of code with the fix, if possible.
6+
7+
# Test info
8+
9+
- Name: web\browserstack.spec.ts >> @web @browserstack BrowserStack Cross-Browser Tests >> should run login page test on BrowserStack Chrome
10+
- Location: tests\web\browserstack.spec.ts:16:7
11+
12+
# Error details
13+
14+
```
15+
Error: browserType.connectOverCDP: Target page, context or browser has been closed
16+
Browser logs:
17+
18+
Error: Invalid username or password
19+
20+
Call log:
21+
- <ws connecting> wss://cdp.browserstack.com/playwright
22+
- <ws connected> wss://cdp.browserstack.com/playwright
23+
- <ws disconnected> wss://cdp.browserstack.com/playwright code=1001 reason=Error: Invalid username or password
24+
25+
```
26+
27+
# Test source
28+
29+
```ts
30+
1 | import { test, expect, chromium } from '@playwright/test'
31+
2 | import { browserstackConfig } from '../../config/browserstack/capabilities'
32+
3 | import { HomePage } from '../../src/web/pages'
33+
4 | import { LoginPage } from '../../src/web/pages'
34+
5 |
35+
6 | const BASE_URL = 'https://automationexercise.com'
36+
7 |
37+
8 | const isBS = process.env.ENV === 'browserstack'
38+
9 | && !!process.env.BROWSERSTACK_USERNAME
39+
10 | && !!process.env.BROWSERSTACK_ACCESS_KEY
40+
11 |
41+
12 | test.describe('@web @browserstack BrowserStack Cross-Browser Tests', () => {
42+
13 |
43+
14 | test.skip(!isBS, 'Skipping BrowserStack tests - set ENV=browserstack to run')
44+
15 |
45+
16 | test('should run login page test on BrowserStack Chrome', async () => {
46+
17 | const capabilities = {
47+
18 | browser: 'chrome',
48+
19 | browser_version: 'latest',
49+
20 | os: 'Windows',
50+
21 | os_version: '11',
51+
22 | 'browserstack.username': browserstackConfig.username,
52+
23 | 'browserstack.accessKey': browserstackConfig.accessKey,
53+
24 | name: 'Login Page Test - Chrome',
54+
25 | build: 'QA Multipurpose Framework - Build 1',
55+
26 | project: 'qa-multipurpose-framework',
56+
27 | }
57+
28 |
58+
29 | const cdpUrl = browserstackConfig.getCdpUrl(capabilities)
59+
> 30 | const browser = await chromium.connectOverCDP(cdpUrl)
60+
| ^ Error: browserType.connectOverCDP: Target page, context or browser has been closed
61+
31 | const context = await browser.newContext()
62+
32 | const page = await context.newPage()
63+
33 |
64+
34 | try {
65+
35 | const loginPage = new LoginPage(page, BASE_URL)
66+
36 | await loginPage.navigate()
67+
37 | const isVisible = await loginPage.isLoginFormVisible()
68+
38 | expect(isVisible).toBeTruthy()
69+
39 |
70+
40 | const homePage = new HomePage(page, BASE_URL)
71+
41 | await homePage.navigate()
72+
42 | const isNavVisible = await homePage.isNavbarVisible()
73+
43 | expect(isNavVisible).toBeTruthy()
74+
44 | } finally {
75+
45 | await page.close()
76+
46 | await context.close()
77+
47 | await browser.close()
78+
48 | }
79+
49 | })
80+
50 | })
81+
```

0 commit comments

Comments
 (0)