Skip to content

Commit 6fe84d8

Browse files
Fix flaky create project page test (Kitware#3723)
1 parent 240f649 commit 6fe84d8

1 file changed

Lines changed: 32 additions & 22 deletions

File tree

tests/Browser/Pages/CreateProjectPageTest.php

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,13 @@ public function testShowsErrorWhenInvalidProjectNameProvided(): void
7171
$this->browse(function (Browser $browser): void {
7272
$browser->loginAs($this->users['admin'])
7373
->visit('/projects/new')
74-
->waitFor('@create-project-page')
75-
->type('@project-name-input', 'invalid project name %')
76-
->click('@create-project-button')
77-
->waitFor('@project-name-validation-errors')
78-
->assertSeeIn('@project-name-validation-errors', 'Project name may only contain letters, numbers, dashes, and underscores.')
74+
->whenAvailable('@create-project-page', function (Browser $browser): void {
75+
$browser->waitFor('@project-name-input')
76+
->type('@project-name-input', 'invalid project name %')
77+
->click('@create-project-button')
78+
->waitFor('@project-name-validation-errors')
79+
->assertSeeIn('@project-name-validation-errors', 'Project name may only contain letters, numbers, dashes, and underscores.');
80+
})
7981
;
8082
});
8183
}
@@ -93,11 +95,13 @@ public function testShowsErrorWhenProjectAlreadyExists(): void
9395
$this->browse(function (Browser $browser) use ($project_name): void {
9496
$browser->loginAs($this->users['admin'])
9597
->visit('/projects/new')
96-
->waitFor('@create-project-page')
97-
->type('@project-name-input', $project_name)
98-
->click('@create-project-button')
99-
->waitFor('@project-name-validation-errors')
100-
->assertSeeIn('@project-name-validation-errors', 'A project with this name already exists.')
98+
->whenAvailable('@create-project-page', function (Browser $browser) use ($project_name): void {
99+
$browser->waitFor('@project-name-input')
100+
->type('@project-name-input', $project_name)
101+
->click('@create-project-button')
102+
->waitFor('@project-name-validation-errors')
103+
->assertSeeIn('@project-name-validation-errors', 'A project with this name already exists.');
104+
})
101105
;
102106
});
103107
}
@@ -112,10 +116,12 @@ public function testCreateProjectSetDescription(): void
112116
$this->browse(function (Browser $browser) use ($description, $name): void {
113117
$browser->loginAs($this->users['admin'])
114118
->visit('/projects/new')
115-
->waitFor('@create-project-page')
116-
->type('@project-name-input', $name)
117-
->type('@project-description-input', $description)
118-
->click('@create-project-button')
119+
->whenAvailable('@create-project-page', function (Browser $browser) use ($description, $name): void {
120+
$browser->waitFor('@project-name-input')
121+
->type('@project-name-input', $name)
122+
->type('@project-description-input', $description)
123+
->click('@create-project-button');
124+
})
119125
->waitForReload()
120126
;
121127
});
@@ -135,10 +141,12 @@ public function testCreateProjectSetAuthenticatedSubmissions(): void
135141
$this->browse(function (Browser $browser) use ($name): void {
136142
$browser->loginAs($this->users['admin'])
137143
->visit('/projects/new')
138-
->waitFor('@create-project-page')
139-
->type('@project-name-input', $name)
140-
->click('@project-authenticated-submissions-input')
141-
->click('@create-project-button')
144+
->whenAvailable('@create-project-page', function (Browser $browser) use ($name): void {
145+
$browser->waitFor('@project-name-input')
146+
->type('@project-name-input', $name)
147+
->click('@project-authenticated-submissions-input')
148+
->click('@create-project-button');
149+
})
142150
->waitForReload()
143151
;
144152
});
@@ -171,10 +179,12 @@ public function testCreateProjectSetVisibility(string $fieldname, int $role): vo
171179
$this->browse(function (Browser $browser) use ($fieldname, $name): void {
172180
$browser->loginAs($this->users['admin'])
173181
->visit('/projects/new')
174-
->waitFor('@create-project-page')
175-
->type('@project-name-input', $name)
176-
->click('@project-visibility-' . $fieldname)
177-
->click('@create-project-button')
182+
->whenAvailable('@create-project-page', function (Browser $browser) use ($fieldname, $name): void {
183+
$browser->waitFor('@project-name-input')
184+
->type('@project-name-input', $name)
185+
->click('@project-visibility-' . $fieldname)
186+
->click('@create-project-button');
187+
})
178188
->waitForReload()
179189
;
180190
});

0 commit comments

Comments
 (0)