Skip to content

Commit a692dd5

Browse files
committed
feat: add isConnected method to CodeServer model
1 parent 0d9fe6f commit a692dd5

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

test/e2e/codeServer.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ test.describe("CodeServer", () => {
3838
expect(await codeServer.isEditorVisible()).toBe(true)
3939
})
4040

41+
test.only("should always have a connection", options, async ({ page }) => {
42+
expect(await codeServer.isConnected()).toBe(true)
43+
})
44+
4145
test("should show the Integrated Terminal", options, async ({ page }) => {
4246
await codeServer.focusTerminal()
4347
expect(await page.isVisible("#terminal")).toBe(true)

test/e2e/models/CodeServer.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,26 @@ export class CodeServer {
5656
return await this.page.isVisible(this.editorSelector)
5757
}
5858

59+
/**
60+
* Checks if the editor is visible
61+
*/
62+
async isConnected() {
63+
// Make sure the editor actually loaded
64+
// If it's not visible after 5 seconds, something is wrong
65+
await this.page.waitForLoadState("networkidle")
66+
67+
// See [aria-label="Remote Host"] text=${CODE_SERVER_ADDRESS}
68+
const hostElement = await this.page.$(`[aria-label="Remote Host"]`)
69+
// Returns something like " localhost:8080"
70+
const host = await hostElement?.innerText()
71+
72+
// Check if host (localhost:8080) is in the CODE_SERVER_ADDRESS
73+
// if it is, we're connected!
74+
// if not, we may need to reload the page
75+
// Make sure to trim whitespace too
76+
return host ? CODE_SERVER_ADDRESS.includes(host.trim()) : false
77+
}
78+
5979
/**
6080
* Focuses Integrated Terminal
6181
* by using "Terminal: Focus Terminal"

0 commit comments

Comments
 (0)