diff --git a/extension/src/popup/components/types/__tests__/_typed-forms.ts b/extension/src/popup/components/types/__tests__/_typed-forms.ts new file mode 100644 index 0000000..09918f5 --- /dev/null +++ b/extension/src/popup/components/types/__tests__/_typed-forms.ts @@ -0,0 +1,23 @@ +/// Shared list of typed-form (`renderForm`) entries for it.each parameterization +/// across regression tests. Add a new typed form here ONCE — popup + fullscreen +/// suites pick it up automatically. + +import * as login from '../login'; +import * as secureNote from '../secure-note'; +import * as identity from '../identity'; +import * as card from '../card'; +import * as key from '../key'; +import * as totp from '../totp'; +import * as documentType from '../document'; + +type RenderFn = (app: HTMLElement, mode: 'add' | 'edit', existing: null) => void; + +export const TYPED_FORMS: Array<[string, RenderFn]> = [ + ['login', login.renderForm], + ['secure-note', secureNote.renderForm], + ['identity', identity.renderForm], + ['card', card.renderForm], + ['key', key.renderForm], + ['totp', totp.renderForm], + ['document', documentType.renderForm], +]; diff --git a/extension/src/popup/components/types/__tests__/popout-button-fullscreen.test.ts b/extension/src/popup/components/types/__tests__/popout-button-fullscreen.test.ts index b9ccfb3..e7a6773 100644 --- a/extension/src/popup/components/types/__tests__/popout-button-fullscreen.test.ts +++ b/extension/src/popup/components/types/__tests__/popout-button-fullscreen.test.ts @@ -18,28 +18,12 @@ vi.mock('../../generator-panel', () => ({ isGeneratorPanelOpen: () => false, })); -import * as login from '../login'; -import * as secureNote from '../secure-note'; -import * as identity from '../identity'; -import * as card from '../card'; -import * as key from '../key'; -import * as totp from '../totp'; -import * as documentType from '../document'; - -const forms: Array<[string, (app: HTMLElement, mode: 'add' | 'edit', existing: null) => void]> = [ - ['login', login.renderForm], - ['secure-note', secureNote.renderForm], - ['identity', identity.renderForm], - ['card', card.renderForm], - ['key', key.renderForm], - ['totp', totp.renderForm], - ['document', documentType.renderForm], -]; +import { TYPED_FORMS } from './_typed-forms'; describe('popout-to-tab button (fullscreen context)', () => { beforeEach(() => { document.body.innerHTML = '
'; }); - it.each(forms)('%s form does NOT render the popout button', (_name, render) => { + it.each(TYPED_FORMS)('%s form does NOT render the popout button', (_name, render) => { render(document.getElementById('app')!, 'add', null); expect(document.getElementById('popout-btn')).toBeNull(); }); diff --git a/extension/src/popup/components/types/__tests__/popout-button.test.ts b/extension/src/popup/components/types/__tests__/popout-button.test.ts index 3232f02..1ed8809 100644 --- a/extension/src/popup/components/types/__tests__/popout-button.test.ts +++ b/extension/src/popup/components/types/__tests__/popout-button.test.ts @@ -18,28 +18,12 @@ vi.mock('../../generator-panel', () => ({ isGeneratorPanelOpen: () => false, })); -import * as login from '../login'; -import * as secureNote from '../secure-note'; -import * as identity from '../identity'; -import * as card from '../card'; -import * as key from '../key'; -import * as totp from '../totp'; -import * as documentType from '../document'; - -const forms: Array<[string, (app: HTMLElement, mode: 'add' | 'edit', existing: null) => void]> = [ - ['login', login.renderForm], - ['secure-note', secureNote.renderForm], - ['identity', identity.renderForm], - ['card', card.renderForm], - ['key', key.renderForm], - ['totp', totp.renderForm], - ['document', documentType.renderForm], -]; +import { TYPED_FORMS } from './_typed-forms'; describe('popout-to-tab button (popup context)', () => { beforeEach(() => { document.body.innerHTML = ''; }); - it.each(forms)('%s form renders the popout button', (_name, render) => { + it.each(TYPED_FORMS)('%s form renders the popout button', (_name, render) => { render(document.getElementById('app')!, 'add', null); expect(document.getElementById('popout-btn')).not.toBeNull(); }); diff --git a/extension/src/popup/components/types/__tests__/required-pill.test.ts b/extension/src/popup/components/types/__tests__/required-pill.test.ts index 3ad1027..70f0236 100644 --- a/extension/src/popup/components/types/__tests__/required-pill.test.ts +++ b/extension/src/popup/components/types/__tests__/required-pill.test.ts @@ -18,33 +18,17 @@ vi.mock('../../generator-panel', () => ({ isGeneratorPanelOpen: () => false, })); -import * as login from '../login'; -import * as secureNote from '../secure-note'; -import * as identity from '../identity'; -import * as card from '../card'; -import * as key from '../key'; -import * as totp from '../totp'; -import * as documentType from '../document'; - -const forms: Array<[string, (app: HTMLElement, mode: 'add' | 'edit', existing: null) => void]> = [ - ['login', login.renderForm], - ['secure-note', secureNote.renderForm], - ['identity', identity.renderForm], - ['card', card.renderForm], - ['key', key.renderForm], - ['totp', totp.renderForm], - ['document', documentType.renderForm], -]; +import { TYPED_FORMS } from './_typed-forms'; describe('required-pill migration', () => { beforeEach(() => { document.body.innerHTML = ''; }); - it.each(forms)('%s form has no legacy markup', (_name, render) => { + it.each(TYPED_FORMS)('%s form has no legacy markup', (_name, render) => { render(document.getElementById('app')!, 'add', null); expect(document.body.innerHTML).not.toContain('class="req"'); }); - it.each(forms)('%s form contains the .req-pill markup on at least one label', (_name, render) => { + it.each(TYPED_FORMS)('%s form contains the .req-pill markup on at least one label', (_name, render) => { render(document.getElementById('app')!, 'add', null); expect(document.body.innerHTML).toContain('class="req-pill">required'); });