mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	docs(ct): improve pinia instructions (#20644)
This commit is contained in:
		
							parent
							
								
									4a3d79f291
								
							
						
					
					
						commit
						aaafd37e24
					
				| @ -560,17 +560,51 @@ export default defineConfig({ | |||||||
| }); | }); | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| don't forget to initialize your plugins, for example if you are using Pinia, add init code into your `playwright/index.{js,ts,jsx,tsx}`: | ### Q) how can i test components that uses Pinia? | ||||||
|  | 
 | ||||||
|  | Pinia needs to be initialized in `playwright/index.{js,ts,jsx,tsx}`. If you do this inside a `beforeMount` hook, the `initialState` can be overwritten on a per-test basis: | ||||||
| 
 | 
 | ||||||
| ```js | ```js | ||||||
| import { createTestingPinia } from '@pinia/testing'; |   // playwright/index.ts | ||||||
|  |   import { beforeMount, afterMount } from '@playwright/experimental-ct-vue/hooks'; | ||||||
|  |   import { createTestingPinia } from '@pinia/testing'; | ||||||
|  |   import type { StoreState } from 'pinia'; | ||||||
|  |   import type { useStore } from '../src/store'; | ||||||
| 
 | 
 | ||||||
| createTestingPinia({ |   export type HooksConfig = { | ||||||
|   createSpy: (args) => { |     store?: StoreState<ReturnType<typeof useStore>>; | ||||||
|     console.log('spy', args); |   } | ||||||
|     return () => { | 
 | ||||||
|       console.log('spyreturns'); |   beforeMount<HooksConfig>(async ({ hooksConfig }) => { | ||||||
|     }; |     createTestingPinia({ | ||||||
|   }, |       initialState: hooksConfig?.store, | ||||||
| }); |       /** | ||||||
|  |        * Use http intercepting to mock api calls instead: | ||||||
|  |        * https://playwright.dev/docs/mock#mock-api-requests | ||||||
|  |        */ | ||||||
|  |       stubActions: false, | ||||||
|  |       createSpy(args) { | ||||||
|  |         console.log('spy', args) | ||||||
|  |         return () => console.log('spy-returns') | ||||||
|  |       }, | ||||||
|  |     }); | ||||||
|  |   }); | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  |   #### In your test file: | ||||||
|  | 
 | ||||||
|  | ```js | ||||||
|  |   // src/pinia.spec.ts | ||||||
|  |   import { test, expect } from '@playwright/experimental-ct-vue'; | ||||||
|  |   import type { HooksConfig } from 'playwright'; | ||||||
|  |   import Store from './Store.vue'; | ||||||
|  | 
 | ||||||
|  |   test('override initialState ', async ({ mount }) => { | ||||||
|  |     const component = await mount<HooksConfig>(Store, { | ||||||
|  |       hooksConfig: { | ||||||
|  |         store: { name: 'override initialState' }  | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |     await expect(component).toContainText('override initialState'); | ||||||
|  |   }); | ||||||
| ``` | ``` | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Sander
						Sander