@@ -18,7 +18,8 @@ import {
18
18
coderPort ,
19
19
enterpriseLicense ,
20
20
prometheusPort ,
21
- requireEnterpriseTests , requireTerraformTests ,
21
+ requireEnterpriseTests ,
22
+ requireTerraformTests ,
22
23
} from "./constants" ;
23
24
import { expectUrl } from "./expectUrl" ;
24
25
import {
@@ -52,7 +53,6 @@ export function requiresTerraform() {
52
53
test . skip ( ! requireTerraformTests ) ;
53
54
}
54
55
55
-
56
56
// createWorkspace creates a workspace for a template.
57
57
// It does not wait for it to be running, but it does navigate to the page.
58
58
export const createWorkspace = async (
@@ -159,25 +159,48 @@ export const verifyParameters = async (
159
159
}
160
160
} ;
161
161
162
+ // StarterTemplates are ids of starter templates that can be used in place of
163
+ // the responses payload. These starter templates will require real provisioners.
164
+ export enum StarterTemplates {
165
+ STARTER_DOCKER = "docker" ,
166
+ }
167
+
168
+ function isStarterTemplate (
169
+ input : EchoProvisionerResponses | StarterTemplates | undefined ,
170
+ ) : input is StarterTemplates {
171
+ if ( ! input ) {
172
+ return false ;
173
+ }
174
+ return typeof input === "string" ;
175
+ }
176
+
162
177
// createTemplate navigates to the /templates/new page and uploads a template
163
178
// with the resources provided in the responses argument.
164
179
export const createTemplate = async (
165
180
page : Page ,
166
- responses ?: EchoProvisionerResponses ,
181
+ responses ?: EchoProvisionerResponses | StarterTemplates ,
167
182
) : Promise < string > => {
168
183
// Required to have templates submit their provisioner type as echo!
169
184
await page . addInitScript ( {
170
185
content : "window.playwright = true" ,
171
186
} ) ;
172
187
173
- await page . goto ( "/templates/new" , { waitUntil : "domcontentloaded" } ) ;
188
+ let path = "/templates/new" ;
189
+ if ( isStarterTemplate ( responses ) ) {
190
+ path += `?exampleId=${ responses } ` ;
191
+ }
192
+
193
+ await page . goto ( path , { waitUntil : "domcontentloaded" } ) ;
174
194
await expectUrl ( page ) . toHavePathName ( "/templates/new" ) ;
175
195
176
- await page . getByTestId ( "file-upload" ) . setInputFiles ( {
177
- buffer : await createTemplateVersionTar ( responses ) ,
178
- mimeType : "application/x-tar" ,
179
- name : "template.tar" ,
180
- } ) ;
196
+ if ( ! isStarterTemplate ( responses ) ) {
197
+ await page . getByTestId ( "file-upload" ) . setInputFiles ( {
198
+ buffer : await createTemplateVersionTar ( responses ) ,
199
+ mimeType : "application/x-tar" ,
200
+ name : "template.tar" ,
201
+ } ) ;
202
+ }
203
+
181
204
const name = randomName ( ) ;
182
205
await page . getByLabel ( "Name *" ) . fill ( name ) ;
183
206
await page . getByTestId ( "form-submit" ) . click ( ) ;
0 commit comments