1- import * as fs from "fs/promises" ;
2- import * as os from "os" ;
3- import * as path from "path" ;
41import { test as baseTest , expect } from "@playwright/test" ;
52import { SharedSlice } from "@prismicio/types-internal/lib/customtypes" ;
63import {
@@ -21,7 +18,7 @@ import { SimulatorPage } from "../pages/SimulatorPage";
2118import { SliceMachinePage } from "../pages/SliceMachinePage" ;
2219import { generateRandomId } from "../utils/generateRandomId" ;
2320import { MockManagerProcedures } from "../utils" ;
24- import config from "../playwright.config" ;
21+ import config , { auth , baseUrl } from "../playwright.config" ;
2522
2623type Options = {
2724 onboarded : boolean ;
@@ -48,10 +45,10 @@ type Fixtures = {
4845 /**
4946 * Data
5047 */
51- reusablePageType : { name : string } ;
52- singlePageType : { name : string } ;
53- reusableCustomType : { name : string } ;
54- singleCustomType : { name : string } ;
48+ reusablePageType : { name : string ; id : string } ;
49+ singlePageType : { name : string ; id : string } ;
50+ reusableCustomType : { name : string ; id : string } ;
51+ singleCustomType : { name : string ; id : string } ;
5552 slice : { name : string } ;
5653 repeatableZoneSlice : { name : string } ;
5754 firstSliceLibrary : { id : string } ;
@@ -65,6 +62,11 @@ type Fixtures = {
6562 * Mocks
6663 */
6764 procedures : MockManagerProcedures ;
65+
66+ /**
67+ * Authentication
68+ */
69+ userApiToken : string ;
6870} ;
6971
7072export const test = baseTest . extend < Options & Fixtures > ( {
@@ -112,55 +114,79 @@ export const test = baseTest.extend<Options & Fixtures>({
112114 /**
113115 * Data
114116 */
115- reusablePageType : async ( { pageTypesTablePage } , use ) => {
117+ reusablePageType : async ( { pageTypesTablePage, manager } , use ) => {
116118 await pageTypesTablePage . goto ( ) ;
117119 await pageTypesTablePage . openCreateDialog ( ) ;
118120
119- const pageTypeName = "Page Type " + generateRandomId ( ) ;
121+ const uuid = generateRandomId ( ) ;
122+ const pageTypeName = "Page Type " + uuid ;
123+ const pageTypeId = `page_type_${ uuid } ` ;
120124 await pageTypesTablePage . createTypeDialog . createType (
121125 pageTypeName ,
122126 "reusable" ,
123127 ) ;
124128
125- await use ( { name : pageTypeName } ) ;
129+ await use ( { name : pageTypeName , id : pageTypeId } ) ;
130+
131+ await manager . customTypes . deleteCustomType ( {
132+ id : pageTypeId ,
133+ } ) ;
126134 } ,
127- singlePageType : async ( { pageTypesTablePage } , use ) => {
135+ singlePageType : async ( { pageTypesTablePage, manager } , use ) => {
128136 await pageTypesTablePage . goto ( ) ;
129137 await pageTypesTablePage . openCreateDialog ( ) ;
130138
131- const pageTypeName = "Page Type " + generateRandomId ( ) ;
139+ const uuid = generateRandomId ( ) ;
140+ const pageTypeName = "Page Type " + uuid ;
141+ const pageTypeId = `page_type_${ uuid } ` ;
132142 await pageTypesTablePage . createTypeDialog . createType (
133143 pageTypeName ,
134144 "single" ,
135145 ) ;
136146
137- await use ( { name : pageTypeName } ) ;
147+ await use ( { name : pageTypeName , id : pageTypeId } ) ;
148+
149+ await manager . customTypes . deleteCustomType ( {
150+ id : pageTypeId ,
151+ } ) ;
138152 } ,
139- reusableCustomType : async ( { customTypesTablePage } , use ) => {
153+ reusableCustomType : async ( { customTypesTablePage, manager } , use ) => {
140154 await customTypesTablePage . goto ( ) ;
141155 await customTypesTablePage . openCreateDialog ( ) ;
142156
143- const customTypeName = "Custom Type " + generateRandomId ( ) ;
157+ const uuid = generateRandomId ( ) ;
158+ const customTypeName = "Custom Type " + uuid ;
159+ const customTypeId = `custom_type_${ uuid } ` ;
144160 await customTypesTablePage . createTypeDialog . createType (
145161 customTypeName ,
146162 "reusable" ,
147163 ) ;
148164
149- await use ( { name : customTypeName } ) ;
165+ await use ( { name : customTypeName , id : customTypeId } ) ;
166+
167+ await manager . customTypes . deleteCustomType ( {
168+ id : customTypeId ,
169+ } ) ;
150170 } ,
151- singleCustomType : async ( { customTypesTablePage } , use ) => {
171+ singleCustomType : async ( { customTypesTablePage, manager } , use ) => {
152172 await customTypesTablePage . goto ( ) ;
153173 await customTypesTablePage . openCreateDialog ( ) ;
154174
155- const customTypeName = "Custom Type " + generateRandomId ( ) ;
175+ const uuid = generateRandomId ( ) ;
176+ const customTypeName = "Custom Type " + uuid ;
177+ const customTypeId = `custom_type_${ uuid } ` ;
156178 await customTypesTablePage . createTypeDialog . createType (
157179 customTypeName ,
158180 "single" ,
159181 ) ;
160182
161- await use ( { name : customTypeName } ) ;
183+ await use ( { name : customTypeName , id : customTypeId } ) ;
184+
185+ await manager . customTypes . deleteCustomType ( {
186+ id : customTypeId ,
187+ } ) ;
162188 } ,
163- slice : async ( { slicesListPage } , use ) => {
189+ slice : async ( { slicesListPage, manager , firstSliceLibrary } , use ) => {
164190 await slicesListPage . goto ( ) ;
165191 await expect ( slicesListPage . breadcrumbLabel ) . toBeVisible ( ) ;
166192 await slicesListPage . addSliceDropdown . click ( ) ;
@@ -170,6 +196,12 @@ export const test = baseTest.extend<Options & Fixtures>({
170196 await slicesListPage . createSliceDialog . createSlice ( sliceName ) ;
171197
172198 await use ( { name : sliceName } ) ;
199+
200+ const sliceId = sliceName . toLowerCase ( ) ;
201+ await manager . slices . deleteSlice ( {
202+ libraryID : firstSliceLibrary . id ,
203+ sliceID : sliceId ,
204+ } ) ;
173205 } ,
174206 repeatableZoneSlice : async ( { firstSliceLibrary, manager } , use ) => {
175207 const sliceName = "Slice" + generateRandomId ( ) ;
@@ -280,13 +312,6 @@ export const test = baseTest.extend<Options & Fixtures>({
280312 const newContext = await browser . newContext ( { storageState } ) ;
281313 const page = await newContext . newPage ( ) ;
282314
283- // Logout user by default
284- try {
285- await fs . rm ( path . join ( os . homedir ( ) , ".prismic" ) ) ;
286- } catch ( error ) {
287- // Ignore since it means the user is already logged out
288- }
289-
290315 // Propagate the modified page to the test
291316 await use ( page ) ;
292317
@@ -316,4 +341,22 @@ export const test = baseTest.extend<Options & Fixtures>({
316341
317342 await use ( procedures ) ;
318343 } ,
344+
345+ /**
346+ * Authentication
347+ */
348+ // eslint-disable-next-line no-empty-pattern
349+ userApiToken : async ( { } , use ) => {
350+ const authUrl = baseUrl . replace ( "https://" , "https://auth." ) ;
351+ const loginResponse = await fetch ( `${ authUrl } login` , {
352+ method : "POST" ,
353+ body : JSON . stringify ( {
354+ email : auth . username ,
355+ password : auth . password ,
356+ } ) ,
357+ } ) ;
358+ const userApiToken = await loginResponse . text ( ) ;
359+
360+ await use ( userApiToken ) ;
361+ } ,
319362} ) ;
0 commit comments