fix: use fake timers in edit workspace test (#27141)

Fixes an issue where the debounce delay plus edit delay exceeds the wait timeout.

Also remove the mocked rich parameters call; it is not used.
This commit is contained in:
Asher
2026-07-13 10:30:41 -08:00
committed by GitHub
parent 6f6d7539c8
commit 15fd7b746a
2 changed files with 35 additions and 39 deletions
@@ -8,9 +8,6 @@ import {
MockPreviewParameter2,
MockPreviewParameter4,
MockPreviewParameter7,
MockTemplateVersionParameter1,
MockTemplateVersionParameter4,
MockTemplateVersionParameter7,
MockWorkspace,
MockWorkspaceBuildParameter1,
MockWorkspaceBuildParameter4,
@@ -50,11 +47,6 @@ describe("WorkspaceParametersPage", () => {
vi.spyOn(API, "getWorkspaceByOwnerAndName").mockResolvedValueOnce(
MockWorkspace,
);
vi.spyOn(API, "getTemplateVersionRichParameters").mockResolvedValueOnce([
MockTemplateVersionParameter1, // a mutable string
MockTemplateVersionParameter4, // an immutable string
MockTemplateVersionParameter7, // optional string
]);
vi.spyOn(API, "postWorkspaceBuild").mockRejectedValueOnce(
new Error("not implemented"),
);
@@ -329,6 +321,12 @@ describe("WorkspaceParametersPage", () => {
MockPreviewParameter7,
);
// Make the debounce fire after each macrotask, to avoid the waitFor() calls
// timing out. As the edits come in and are (sometimes slowly) processed on
// top of the 500ms debounce, this can trip waitFor()'s 1000ms timeout.
vi.useFakeTimers();
vi.setTimerTickMode("nextTimerAsync");
// Blank out one field and fill out another.
const editedParameters = [
// Put the blank one first to ensure we are preserving blank values and
+29 -31
View File
@@ -1903,20 +1903,19 @@ export const MockTemplateVersionParameter3: TypesGen.TemplateVersionParameter =
ephemeral: false,
};
export const MockTemplateVersionParameter4: TypesGen.TemplateVersionParameter =
{
name: "fourth_parameter",
type: "string",
form_type: "input",
description: "This is fourth parameter",
description_plaintext: "Markdown: This is fourth parameter",
default_value: "def",
mutable: false,
icon: "/icon/database.svg",
options: [],
required: true,
ephemeral: false,
};
const MockTemplateVersionParameter4: TypesGen.TemplateVersionParameter = {
name: "fourth_parameter",
type: "string",
form_type: "input",
description: "This is fourth parameter",
description_plaintext: "Markdown: This is fourth parameter",
default_value: "def",
mutable: false,
icon: "/icon/database.svg",
options: [],
required: true,
ephemeral: false,
};
const MockTemplateVersionParameter5: TypesGen.TemplateVersionParameter = {
name: "fifth_parameter",
@@ -1951,23 +1950,22 @@ export const MockTemplateVersionParameter6: TypesGen.TemplateVersionParameter =
};
// Not required and the default is a blank string.
export const MockTemplateVersionParameter7: TypesGen.TemplateVersionParameter =
{
name: "seventh_parameter",
type: "string",
form_type: "input",
description: "This is seventh parameter",
description_plaintext: "Markdown: This is seventh parameter",
default_value: "",
mutable: true,
icon: "/icon/folder.svg",
options: [],
validation_min: 1,
validation_max: 10,
validation_monotonic: "decreasing",
required: false,
ephemeral: false,
};
const MockTemplateVersionParameter7: TypesGen.TemplateVersionParameter = {
name: "seventh_parameter",
type: "string",
form_type: "input",
description: "This is seventh parameter",
description_plaintext: "Markdown: This is seventh parameter",
default_value: "",
mutable: true,
icon: "/icon/folder.svg",
options: [],
validation_min: 1,
validation_max: 10,
validation_monotonic: "decreasing",
required: false,
ephemeral: false,
};
export const MockTemplateVersionVariable1: TypesGen.TemplateVersionVariable = {
name: "first_variable",