| 
									
										
										
										
											2021-06-06 17:09:53 -07:00
										 |  |  | /** | 
					
						
							|  |  |  |  * Copyright Microsoft Corporation. All rights reserved. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  |  * you may not use this file except in compliance with the License. | 
					
						
							|  |  |  |  * You may obtain a copy of the License at | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *     http://www.apache.org/licenses/LICENSE-2.0
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  * distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  |  * See the License for the specific language governing permissions and | 
					
						
							|  |  |  |  * limitations under the License. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-07 15:11:44 -08:00
										 |  |  | import { test, expect } from './playwright-test-fixtures'; | 
					
						
							| 
									
										
										
										
											2021-06-06 17:09:53 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | test('should work directly', async ({ runInlineTest }) => { | 
					
						
							|  |  |  |   const result = await runInlineTest({ | 
					
						
							|  |  |  |     'a.test.js': `
 | 
					
						
							| 
									
										
										
										
											2023-02-14 19:20:56 -08:00
										 |  |  |       import { test, expect } from '@playwright/test'; | 
					
						
							| 
									
										
										
										
											2021-06-06 17:09:53 -07:00
										 |  |  |       test('test 1', async ({}, testInfo) => { | 
					
						
							|  |  |  |         expect(testInfo.title).toBe('test 1'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       test('test 2', async ({}, testInfo) => { | 
					
						
							|  |  |  |         expect(testInfo.title).toBe('test 2'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     `,
 | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   expect(result.exitCode).toBe(0); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | test('should work via fixture', async ({ runInlineTest }) => { | 
					
						
							|  |  |  |   const result = await runInlineTest({ | 
					
						
							|  |  |  |     'helper.ts': `
 | 
					
						
							| 
									
										
										
										
											2023-02-14 19:20:56 -08:00
										 |  |  |       import { test as base } from '@playwright/test'; | 
					
						
							|  |  |  |       export * from '@playwright/test'; | 
					
						
							|  |  |  |       export const test = base.extend({ | 
					
						
							| 
									
										
										
										
											2021-06-06 17:09:53 -07:00
										 |  |  |         title: async ({}, run, testInfo) => { | 
					
						
							|  |  |  |           await run(testInfo.title); | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     `,
 | 
					
						
							|  |  |  |     'a.test.js': `
 | 
					
						
							| 
									
										
										
										
											2023-02-14 19:20:56 -08:00
										 |  |  |       const { test, expect } = require('./helper'); | 
					
						
							| 
									
										
										
										
											2021-06-06 17:09:53 -07:00
										 |  |  |       test('test 1', async ({title}) => { | 
					
						
							|  |  |  |         expect(title).toBe('test 1'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       test('test 2', async ({title}) => { | 
					
						
							|  |  |  |         expect(title).toBe('test 2'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     `,
 | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   expect(result.exitCode).toBe(0); | 
					
						
							|  |  |  | }); | 
					
						
							| 
									
										
										
										
											2021-12-06 09:25:11 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | test('should work via test.info', async ({ runInlineTest }) => { | 
					
						
							|  |  |  |   const result = await runInlineTest({ | 
					
						
							|  |  |  |     'helper.ts': `
 | 
					
						
							| 
									
										
										
										
											2023-02-14 19:20:56 -08:00
										 |  |  |       import { test as base } from '@playwright/test'; | 
					
						
							|  |  |  |       export * from '@playwright/test'; | 
					
						
							|  |  |  |       export const test = base.extend({ | 
					
						
							| 
									
										
										
										
											2021-12-06 09:25:11 -08:00
										 |  |  |         title: async ({}, run) => { | 
					
						
							| 
									
										
										
										
											2023-02-14 19:20:56 -08:00
										 |  |  |           await run(base.info().title); | 
					
						
							| 
									
										
										
										
											2021-12-06 09:25:11 -08:00
										 |  |  |         }, | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     `,
 | 
					
						
							|  |  |  |     'a.test.js': `
 | 
					
						
							| 
									
										
										
										
											2023-02-14 19:20:56 -08:00
										 |  |  |       const { test, expect } = require('./helper'); | 
					
						
							| 
									
										
										
										
											2021-12-06 09:25:11 -08:00
										 |  |  |       test('test 1', async ({title}) => { | 
					
						
							|  |  |  |         expect(test.info().title).toBe('test 1'); | 
					
						
							|  |  |  |         expect(title).toBe('test 1'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       test('test 2', async ({title}) => { | 
					
						
							|  |  |  |         expect(title).toBe('test 2'); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     `,
 | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  |   expect(result.exitCode).toBe(0); | 
					
						
							|  |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | test('should throw outside test', async ({ runInlineTest }) => { | 
					
						
							|  |  |  |   const result = await runInlineTest({ | 
					
						
							|  |  |  |     'a.test.js': `
 | 
					
						
							| 
									
										
										
										
											2023-02-14 19:20:56 -08:00
										 |  |  |       import { test, expect } from '@playwright/test'; | 
					
						
							| 
									
										
										
										
											2021-12-06 09:25:11 -08:00
										 |  |  |       test.info(); | 
					
						
							|  |  |  |       test('test 1', async ({title}) => {}); | 
					
						
							|  |  |  |     `,
 | 
					
						
							|  |  |  |   }); | 
					
						
							| 
									
										
										
										
											2023-02-07 15:11:44 -08:00
										 |  |  |   const output = result.output; | 
					
						
							| 
									
										
										
										
											2021-12-06 09:25:11 -08:00
										 |  |  |   expect(result.exitCode).toBe(1); | 
					
						
							|  |  |  |   expect(output).toContain('test.info() can only be called while test is running'); | 
					
						
							|  |  |  | }); |