@@ -19,8 +19,12 @@ import { prometheusPort, pprofPort } from "./constants";
19
19
import { port } from "./playwright.config" ;
20
20
import * as ssh from "ssh2" ;
21
21
import { Duplex } from "stream" ;
22
- import { WorkspaceBuildParameter } from "api/typesGenerated" ;
22
+ import {
23
+ WorkspaceBuildParameter ,
24
+ UpdateTemplateMeta ,
25
+ } from "api/typesGenerated" ;
23
26
import axios from "axios" ;
27
+ import capitalize from "lodash/capitalize" ;
24
28
25
29
// createWorkspace creates a workspace for a template.
26
30
// It does not wait for it to be running, but it does navigate to the page.
@@ -709,6 +713,30 @@ export const updateTemplate = async (
709
713
await uploaded . wait ( ) ;
710
714
} ;
711
715
716
+ export const updateTemplateSettings = async (
717
+ page : Page ,
718
+ templateName : string ,
719
+ templateSettingValues : Pick <
720
+ UpdateTemplateMeta ,
721
+ "name" | "display_name" | "description"
722
+ > ,
723
+ ) => {
724
+ await page . goto ( `/templates/${ templateName } /settings` , {
725
+ waitUntil : "domcontentloaded" ,
726
+ } ) ;
727
+ await expect ( page ) . toHaveURL ( `/templates/${ templateName } /settings` ) ;
728
+
729
+ for ( const [ key , value ] of Object . entries ( templateSettingValues ) ) {
730
+ const labelText = capitalize ( key ) . replace ( "_" , " " ) ;
731
+ await page . getByLabel ( labelText , { exact : true } ) . fill ( value ) ;
732
+ }
733
+
734
+ await page . getByTestId ( "form-submit" ) . click ( ) ;
735
+
736
+ const name = templateSettingValues . name ?? templateName ;
737
+ await expect ( page ) . toHaveURL ( `/templates/${ name } ` ) ;
738
+ } ;
739
+
712
740
export const updateWorkspace = async (
713
741
page : Page ,
714
742
workspaceName : string ,
0 commit comments