8377bd23df
* chore: upgrade Code to 1.74.1
* chore: remove require in integration.diff
I don't know what the impact of this is but in 192c67db71
they removed the usage of `require` in `server.main.ts`.
More details in PR: https://github.com/microsoft/vscode/pull/165831
* chore: update marketplace.diff
* chore: update sha hash in webview.diff
* chore: update disable-builtin-ext-update.diff
If my logic is right, then this patch is now simplified thanks to this:
https://github.com/microsoft/vscode/blob/1.74.1/src/vs/workbench/contrib/extensions/browser/extensionsWorkbenchService.ts#L1238
* chore: refresh proxy-uri patch
* chore: refresh local-storage.diff
* chore: refresh sourcemaps.diff
* chore: refresh disable-downloads.diff
* chore: refresh display-language.diff
* chore: refresh getting-started.diff
* docs: update testing notes for cli-window-open
* docs: update telemetry testing instructions
* fix: add GITHUB_TOKEN to build code-server job
Downloading @vscode/ripgrep is failing only in CI so adding this
environment variable to see if it increases the rate limit.
Ref: https://github.com/microsoft/vscode-ripgrep#github-api-limit-note
* refactor: use own cache key build code-server job
* temp: disable vscode test
* refactor: delete wrapper test
* Revert "refactor: delete wrapper test"
This reverts commit 3999279b73c3519c7dbb03dfc7076bf26f717e13.
* refactor: move vscode tests to e2e (#5911)
* wip: migrate vscode tests to e2e
* feat: add codeWorkspace to global setup
* refactor: only use dir in spawn when we should
* wip: migrate more tests
* refactor: move all vscode tests to e2e
* refactor(ci): move unit to own job
* fixup: add codecov to unit test step
* Update test/e2e/models/CodeServer.ts
* Update test/e2e/models/CodeServer.ts
* docs: add note about intercept requests
* refactor: rm unused clean() calls
* refactor: delete duplicate test
* refactor: update 'should not redirect' test
* refactor: rm unused imports
* refactor: rm unnecessary navigate call in test
* fixup: formatting
* wip: update test
* refactor: modify assertion for proxy
* fixup: use REVERSE_PROXY_BASE_PATH
* refactor: add helper fn getMaybeProxiedPathname
* fixup: formatting
* fixup: rm unused import
* chore: increase playwright timeout
* Revert "chore: increase playwright timeout"
This reverts commit a059129252216c5f5cba83e9bca3d90cf658b7be.
* chore: rm timeout
112 lines
4.2 KiB
TypeScript
112 lines
4.2 KiB
TypeScript
import { describe, test, expect } from "./baseFixture"
|
|
import { clean, getMaybeProxiedPathname } from "../utils/helpers"
|
|
|
|
const routes = ["/", "/vscode", "/vscode/"]
|
|
|
|
describe("VS Code Routes", ["--disable-workspace-trust"], {}, async () => {
|
|
const testName = "vscode-routes-default"
|
|
test.beforeAll(async () => {
|
|
await clean(testName)
|
|
})
|
|
|
|
test("should load all route variations", async ({ codeServerPage }) => {
|
|
for (const route of routes) {
|
|
await codeServerPage.navigate(route)
|
|
|
|
// Check there were no redirections
|
|
const url = new URL(codeServerPage.page.url())
|
|
const pathname = getMaybeProxiedPathname(url)
|
|
expect(pathname).toBe(route)
|
|
|
|
// TODO@jsjoeio
|
|
// now that we are in a proper browser instead of scraping the HTML we
|
|
// could possibly intercept requests to make sure assets are loading from
|
|
// the right spot.
|
|
//
|
|
// Check that page loaded from correct route
|
|
const html = await codeServerPage.page.innerHTML("html")
|
|
switch (route) {
|
|
case "/":
|
|
case "/vscode/":
|
|
expect(html).toMatch(/src="\.\/[a-z]+-[0-9a-z]+\/static\//)
|
|
break
|
|
case "/vscode":
|
|
expect(html).toMatch(/src="\.\/vscode\/[a-z]+-[0-9a-z]+\/static\//)
|
|
break
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
const CODE_WORKSPACE_DIR = process.env.CODE_WORKSPACE_DIR || ""
|
|
describe("VS Code Routes with code-workspace", ["--disable-workspace-trust", CODE_WORKSPACE_DIR], {}, async () => {
|
|
test("should redirect to the passed in workspace using human-readable query", async ({ codeServerPage }) => {
|
|
const url = new URL(codeServerPage.page.url())
|
|
const pathname = getMaybeProxiedPathname(url)
|
|
expect(pathname).toBe("/")
|
|
expect(url.search).toBe(`?workspace=${CODE_WORKSPACE_DIR}`)
|
|
})
|
|
})
|
|
|
|
const CODE_FOLDER_DIR = process.env.CODE_FOLDER_DIR || ""
|
|
describe("VS Code Routes with code-workspace", ["--disable-workspace-trust", CODE_FOLDER_DIR], {}, async () => {
|
|
test("should redirect to the passed in folder using human-readable query", async ({ codeServerPage }) => {
|
|
const url = new URL(codeServerPage.page.url())
|
|
const pathname = getMaybeProxiedPathname(url)
|
|
expect(pathname).toBe("/")
|
|
expect(url.search).toBe(`?folder=${CODE_FOLDER_DIR}`)
|
|
})
|
|
})
|
|
|
|
describe(
|
|
"VS Code Routes with ignore-last-opened",
|
|
["--disable-workspace-trust", "--ignore-last-opened"],
|
|
{},
|
|
async () => {
|
|
test("should not redirect", async ({ codeServerPage }) => {
|
|
const folder = process.env.CODE_FOLDER_DIR
|
|
|
|
await codeServerPage.navigate(`/?folder=${folder}`)
|
|
await codeServerPage.navigate(`/`)
|
|
|
|
const url = new URL(codeServerPage.page.url())
|
|
const pathname = getMaybeProxiedPathname(url)
|
|
expect(pathname).toBe("/")
|
|
expect(url.search).toBe("")
|
|
})
|
|
},
|
|
)
|
|
|
|
describe("VS Code Routes with no workspace or folder", ["--disable-workspace-trust"], {}, async () => {
|
|
test("should redirect to last query folder/workspace", async ({ codeServerPage }) => {
|
|
const folder = process.env.CODE_FOLDER_DIR
|
|
const workspace = process.env.CODE_WORKSPACE_DIR
|
|
await codeServerPage.navigate(`/?folder=${folder}&workspace=${workspace}`)
|
|
|
|
// If you visit again without query parameters it will re-attach them by
|
|
// redirecting. It should always redirect to the same route.
|
|
for (const route of routes) {
|
|
await codeServerPage.navigate(route)
|
|
const url = new URL(codeServerPage.page.url())
|
|
const pathname = getMaybeProxiedPathname(url)
|
|
expect(pathname).toBe(route)
|
|
expect(url.search).toBe(`?folder=${folder}&workspace=${workspace}`)
|
|
}
|
|
})
|
|
})
|
|
|
|
describe("VS Code Routes with no workspace or folder", ["--disable-workspace-trust"], {}, async () => {
|
|
test("should not redirect if ew passed in", async ({ codeServerPage }) => {
|
|
const folder = process.env.CODE_FOLDER_DIR
|
|
const workspace = process.env.CODE_WORKSPACE_DIR
|
|
await codeServerPage.navigate(`/?folder=${folder}&workspace=${workspace}`)
|
|
|
|
// Closing the folder should stop the redirecting.
|
|
await codeServerPage.navigate("/?ew=true")
|
|
let url = new URL(codeServerPage.page.url())
|
|
const pathname = getMaybeProxiedPathname(url)
|
|
expect(pathname).toBe("/")
|
|
expect(url.search).toBe("?ew=true")
|
|
})
|
|
})
|