3 ms·
I like the library, but isn't createOverride / useValue basically modifying components to allow testing?
by throwaway290 3y ago
I like the library, but isn't createOverride / useValue basically modifying components to allow testing?
- kolodny 3y agoCreating an override is basically just providing a placeholder for a value to be injected via React Context. I view this as a form of dependency injection. Contrast this with how this would be done in vanilla Playwright with reading it from a query param or exposing a global to call page.evaluate on which is more along the lines of forcing test code into a component. Note that if you needed a specific reference in an override there isn't a good way to get that via Playwright, consider this silly example: it('can test spies', async () => { const spy = browserMock.fn(); const { page } = await render( app => <LogoutButtonAction.Override with={() => spy}> {app} <LogoutButtonAction.Override> ); await page.getByText('Log out').click(); expect(await spy).toHaveBeenCalled(); });
- throwaway290 3y agoShould it be general framework focused on DI for React? That can make overrides more organic and have more benefits than just testing