Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitc5367c2

Browse files
authored
test: fix url checks in e2e tests (#12881)
1 parent93b46fe commitc5367c2

File tree

5 files changed

+54
-21
lines changed

5 files changed

+54
-21
lines changed

‎site/e2e/expectUrl.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import{expect,typePage}from"@playwright/test";
2+
3+
typePollingOptions={timeout?:number;intervals?:number[]};
4+
5+
exportconstexpectUrl=expect.extend({
6+
/**
7+
* toHavePathName is an alternative to `toHaveURL` that won't fail if the URL contains query parameters.
8+
*/
9+
asynctoHavePathName(page:Page,expected:string,options?:PollingOptions){
10+
letactual:string=newURL(page.url()).pathname;
11+
letpass:boolean;
12+
try{
13+
awaitexpect
14+
.poll(()=>(actual=newURL(page.url()).pathname),options)
15+
.toBe(expected);
16+
pass=true;
17+
}catch{
18+
pass=false;
19+
}
20+
21+
return{
22+
name:"toHavePathName",
23+
pass,
24+
actual,
25+
expected,
26+
message:()=>"The page does not have the expected URL pathname.",
27+
};
28+
},
29+
});

‎site/e2e/global.setup.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { hasFirstUser } from "api/api";
33
import{Language}from"pages/CreateUserPage/CreateUserForm";
44
import{setupApiCalls}from"./api";
55
import*asconstantsfrom"./constants";
6+
import{expectUrl}from"./expectUrl";
67
import{storageState}from"./playwright.config";
78

89
test("setup deployment",async({ page})=>{
@@ -21,7 +22,7 @@ test("setup deployment", async ({ page }) => {
2122
awaitpage.getByLabel(Language.passwordLabel).fill(constants.password);
2223
awaitpage.getByTestId("create").click();
2324

24-
awaitexpect(page).toHaveURL(/\/workspaces.*/);
25+
awaitexpectUrl(page).toHavePathName("/workspaces");
2526
awaitpage.context().storageState({path:storageState});
2627

2728
awaitpage.getByTestId("button-select-template").isVisible();

‎site/e2e/helpers.ts

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
prometheusPort,
2121
requireEnterpriseTests,
2222
}from"./constants";
23+
import{expectUrl}from"./expectUrl";
2324
import{
2425
Agent,
2526
typeApp,
@@ -49,20 +50,18 @@ export const createWorkspace = async (
4950
richParameters:RichParameter[]=[],
5051
buildParameters:WorkspaceBuildParameter[]=[],
5152
):Promise<string>=>{
52-
awaitpage.goto("/templates/"+templateName+"/workspace",{
53+
awaitpage.goto(`/templates/${templateName}/workspace`,{
5354
waitUntil:"domcontentloaded",
5455
});
55-
awaitexpect(page).toHaveURL("/templates/"+templateName+"/workspace");
56+
awaitexpectUrl(page).toHavePathName(`/templates/${templateName}/workspace`);
5657

5758
constname=randomName();
5859
awaitpage.getByLabel("name").fill(name);
5960

6061
awaitfillParameters(page,richParameters,buildParameters);
6162
awaitpage.getByTestId("form-submit").click();
6263

63-
// Workaround: OutdatedAgent lands at "http://localhost:3111/@admin/8d6225b7?resources=echo_dev"
64-
// and this is also a correct location.
65-
awaitpage.waitForURL(newRegExp("/@admin/"+name));
64+
awaitexpectUrl(page).toHavePathName("/@admin/"+name);
6665

6766
awaitpage.waitForSelector("*[data-testid='build-status'] >> text=Running",{
6867
state:"visible",
@@ -79,8 +78,8 @@ export const verifyParameters = async (
7978
awaitpage.goto("/@admin/"+workspaceName+"/settings/parameters",{
8079
waitUntil:"domcontentloaded",
8180
});
82-
awaitexpect(page).toHaveURL(
83-
"/@admin/"+workspaceName+"/settings/parameters",
81+
awaitexpectUrl(page).toHavePathName(
82+
`/@admin/${workspaceName}/settings/parameters`,
8483
);
8584

8685
for(constbuildParameterofexpectedBuildParameters){
@@ -141,7 +140,7 @@ export const createTemplate = async (
141140
});
142141

143142
awaitpage.goto("/templates/new",{waitUntil:"domcontentloaded"});
144-
awaitexpect(page).toHaveURL("/templates/new");
143+
awaitexpectUrl(page).toHavePathName("/templates/new");
145144

146145
awaitpage.getByTestId("file-upload").setInputFiles({
147146
buffer:awaitcreateTemplateVersionTar(responses),
@@ -151,7 +150,7 @@ export const createTemplate = async (
151150
constname=randomName();
152151
awaitpage.getByLabel("Name *").fill(name);
153152
awaitpage.getByTestId("form-submit").click();
154-
awaitexpect(page).toHaveURL(`/templates/${name}/files`,{
153+
awaitexpectUrl(page).toHavePathName(`/templates/${name}/files`,{
155154
timeout:30000,
156155
});
157156
returnname;
@@ -161,7 +160,7 @@ export const createTemplate = async (
161160
// random name.
162161
exportconstcreateGroup=async(page:Page):Promise<string>=>{
163162
awaitpage.goto("/groups/create",{waitUntil:"domcontentloaded"});
164-
awaitexpect(page).toHaveURL("/groups/create");
163+
awaitexpectUrl(page).toHavePathName("/groups/create");
165164

166165
constname=randomName();
167166
awaitpage.getByLabel("Name",{exact:true}).fill(name);
@@ -222,7 +221,7 @@ export const stopWorkspace = async (page: Page, workspaceName: string) => {
222221
awaitpage.goto("/@admin/"+workspaceName,{
223222
waitUntil:"domcontentloaded",
224223
});
225-
awaitexpect(page).toHaveURL("/@admin/"+workspaceName);
224+
awaitexpectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
226225

227226
awaitpage.getByTestId("workspace-stop-button").click();
228227

@@ -241,7 +240,7 @@ export const buildWorkspaceWithParameters = async (
241240
awaitpage.goto("/@admin/"+workspaceName,{
242241
waitUntil:"domcontentloaded",
243242
});
244-
awaitexpect(page).toHaveURL("/@admin/"+workspaceName);
243+
awaitexpectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
245244

246245
awaitpage.getByTestId("build-parameters-button").click();
247246

@@ -753,7 +752,7 @@ export const updateTemplateSettings = async (
753752
awaitpage.goto(`/templates/${templateName}/settings`,{
754753
waitUntil:"domcontentloaded",
755754
});
756-
awaitexpect(page).toHaveURL(`/templates/${templateName}/settings`);
755+
awaitexpectUrl(page).toHavePathName(`/templates/${templateName}/settings`);
757756

758757
for(const[key,value]ofObject.entries(templateSettingValues)){
759758
// Skip max_port_share_level for now since the frontend is not yet able to handle it
@@ -767,7 +766,7 @@ export const updateTemplateSettings = async (
767766
awaitpage.getByTestId("form-submit").click();
768767

769768
constname=templateSettingValues.name??templateName;
770-
awaitexpect(page).toHaveURL(`/templates/${name}`);
769+
awaitexpectUrl(page).toHavePathName(`/templates/${name}`);
771770
};
772771

773772
exportconstupdateWorkspace=async(
@@ -779,7 +778,7 @@ export const updateWorkspace = async (
779778
awaitpage.goto("/@admin/"+workspaceName,{
780779
waitUntil:"domcontentloaded",
781780
});
782-
awaitexpect(page).toHaveURL("/@admin/"+workspaceName);
781+
awaitexpectUrl(page).toHavePathName(`/@admin/${workspaceName}`);
783782

784783
awaitpage.getByTestId("workspace-update-button").click();
785784
awaitpage.getByTestId("confirm-button").click();
@@ -801,8 +800,8 @@ export const updateWorkspaceParameters = async (
801800
awaitpage.goto("/@admin/"+workspaceName+"/settings/parameters",{
802801
waitUntil:"domcontentloaded",
803802
});
804-
awaitexpect(page).toHaveURL(
805-
"/@admin/"+workspaceName+"/settings/parameters",
803+
awaitexpectUrl(page).toHavePathName(
804+
`/@admin/${workspaceName}/settings/parameters`,
806805
);
807806

808807
awaitfillParameters(page,richParameters,buildParameters);
@@ -827,7 +826,9 @@ export async function openTerminalWindow(
827826
// Specify that the shell should be `bash`, to prevent inheriting a shell that
828827
// isn't POSIX compatible, such as Fish.
829828
constcommandQuery=`?command=${encodeURIComponent("/usr/bin/env bash")}`;
830-
awaitexpect(terminal).toHaveURL(`/@admin/${workspaceName}.dev/terminal`);
829+
awaitexpectUrl(terminal).toHavePathName(
830+
`/@admin/${workspaceName}.dev/terminal`,
831+
);
831832
awaitterminal.goto(`/@admin/${workspaceName}.dev/terminal${commandQuery}`);
832833

833834
returnterminal;

‎site/e2e/tests/updateTemplate.spec.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import{expect,test}from"@playwright/test";
2+
import{expectUrl}from"../expectUrl";
23
import{
34
createGroup,
45
createTemplate,
@@ -25,7 +26,7 @@ test("add and remove a group", async ({ page }) => {
2526
awaitpage.goto(`/templates/${templateName}/settings/permissions`,{
2627
waitUntil:"domcontentloaded",
2728
});
28-
awaitexpect(page).toHaveURL(
29+
awaitexpectUrl(page).toHavePathName(
2930
`/templates/${templateName}/settings/permissions`,
3031
);
3132

@@ -55,7 +56,7 @@ test("require latest version", async ({ page }) => {
5556
awaitpage.goto(`/templates/${templateName}/settings`,{
5657
waitUntil:"domcontentloaded",
5758
});
58-
awaitexpect(page).toHaveURL(`/templates/${templateName}/settings`);
59+
awaitexpectUrl(page).toHavePathName(`/templates/${templateName}/settings`);
5960
letcheckbox=awaitpage.waitForSelector("#require_active_version");
6061
awaitcheckbox.click();
6162
awaitpage.getByTestId("form-submit").click();

‎site/src/pages/CreateTokenPage/CreateTokenForm.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ export const CreateTokenForm: FC<CreateTokenFormProps> = ({
116116

117117
{lifetimeDays==="custom"&&(
118118
<TextField
119+
data-chromatic="ignore"
119120
type="date"
120121
label="Expires on"
121122
defaultValue={dayjs().add(expDays,"day").format("YYYY-MM-DD")}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp