diff --git a/src/app/tests/foundation/tests/test.component.harness.ts b/src/app/tests/foundation/tests/test.component.harness.ts index e26340c..7dc8075 100644 --- a/src/app/tests/foundation/tests/test.component.harness.ts +++ b/src/app/tests/foundation/tests/test.component.harness.ts @@ -4,4 +4,18 @@ import { export class TestComponentHarness extends BaseHarness { public static hostSelector = 'app-test-component' + + // only required for testing base harness assertions to make sure test template is populated with expected elements; + // not needed in base harness itself; + // should not be moved to base harness; + public async elementPresent(id: string) { + const cssSelector = this.getCssSelector(id, [ + 'h1', + 'p', + 'div', + 'button' + ]) + const element = await this.locatorForOptional(cssSelector)() + return !!element + } } diff --git a/src/app/tests/foundation/tests/test.component.spec.ts b/src/app/tests/foundation/tests/test.component.spec.ts index 379ce59..b0ecba2 100644 --- a/src/app/tests/foundation/tests/test.component.spec.ts +++ b/src/app/tests/foundation/tests/test.component.spec.ts @@ -44,59 +44,64 @@ describe('Base harness', () => { }) it('buttonEnabled', async () => { + await expectAsync(baseHarness.elementPresent('enabled-button')).toBeResolvedTo(true) await expectAsync(baseHarness.buttonEnabled('enabled-button')).toBeResolvedTo(true) + + await expectAsync(baseHarness.elementPresent('disabled-button')).toBeResolvedTo(true) await expectAsync(baseHarness.buttonEnabled('disabled-button')).toBeResolvedTo(false) + + await expectAsync(baseHarness.elementPresent('non-existent-button')).toBeResolvedTo(false) await expectAsync(baseHarness.buttonEnabled('non-existent-button')).toBeRejected() }) it('elementVisible', async () => { - await expectAsync(baseHarness.elementVisible('h1-element-visible')).toBeResolvedTo(true) - await expectAsync(baseHarness.elementVisible('h1-element-invisible-if')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('h1-element-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('h1-element-style-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('h1-element-style-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('h1-element-class-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('h1-element-class-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('h1-element-non-existent')).toBeResolvedTo(false) - - await expectAsync(baseHarness.elementVisible('p-element-visible')).toBeResolvedTo(true) - await expectAsync(baseHarness.elementVisible('p-element-invisible-if')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('p-element-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('p-element-style-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('p-element-style-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('p-element-class-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('p-element-class-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('p-element-non-existent')).toBeResolvedTo(false) - - await expectAsync(baseHarness.elementVisible('div-element-visible')).toBeResolvedTo(true) - await expectAsync(baseHarness.elementVisible('div-element-invisible-if')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('div-element-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('div-element-style-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('div-element-style-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('div-element-class-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('div-element-class-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('div-element-non-existent')).toBeResolvedTo(false) - - await expectAsync(baseHarness.elementVisible('button-element-visible')).toBeResolvedTo(true) - await expectAsync(baseHarness.elementVisible('button-element-invisible-if')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('button-element-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('button-element-style-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('button-element-style-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('button-element-class-display-none')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('button-element-class-visibility-hidden')).toBeResolvedTo(false) - await expectAsync(baseHarness.elementVisible('button-element-non-existent')).toBeResolvedTo(false) + const tags = [ + 'h1', + 'p', + 'div', + 'button' + ] + for (const tag of tags) { + await expectAsync(baseHarness.elementPresent(`${tag}-element-visible`)).toBeResolvedTo(true) + await expectAsync(baseHarness.elementVisible(`${tag}-element-visible`)).toBeResolvedTo(true) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-invisible-if`)).toBeResolvedTo(false) + await expectAsync(baseHarness.elementVisible(`${tag}-element-invisible-if`)).toBeResolvedTo(false) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-hidden`)).toBeResolvedTo(true) + await expectAsync(baseHarness.elementVisible(`${tag}-element-hidden`)).toBeResolvedTo(false) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-style-display-none`)).toBeResolvedTo(true) + await expectAsync(baseHarness.elementVisible(`${tag}-element-style-display-none`)).toBeResolvedTo(false) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-style-visibility-hidden`)).toBeResolvedTo(true) + await expectAsync(baseHarness.elementVisible(`${tag}-element-style-visibility-hidden`)).toBeResolvedTo(false) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-class-display-none`)).toBeResolvedTo(true) + await expectAsync(baseHarness.elementVisible(`${tag}-element-class-display-none`)).toBeResolvedTo(false) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-class-visibility-hidden`)).toBeResolvedTo(true) + await expectAsync(baseHarness.elementVisible(`${tag}-element-class-visibility-hidden`)).toBeResolvedTo(false) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-non-existent`)).toBeResolvedTo(false) + await expectAsync(baseHarness.elementVisible(`${tag}-element-non-existent`)).toBeResolvedTo(false) + } }) it('elementText', async () => { - await expectAsync(baseHarness.elementText('h1-element-text')).toBeResolvedTo('h1 text') - await expectAsync(baseHarness.elementText('h4-element-text')).toBeResolvedTo('h4 text') - await expectAsync(baseHarness.elementText('p-element-text')).toBeResolvedTo('p text') - await expectAsync(baseHarness.elementText('div-element-text')).toBeResolvedTo('div text') - - await expectAsync(baseHarness.elementText('h1-element-text-non-existent')).toBeRejected() - await expectAsync(baseHarness.elementText('h4-element-text-non-existent')).toBeRejected() - await expectAsync(baseHarness.elementText('p-element-text-non-existent')).toBeRejected() - await expectAsync(baseHarness.elementText('div-element-text-non-existent')).toBeRejected() + const tags = [ + 'h1', + 'h4', + 'p', + 'div' + ] + for (const tag of tags) { + await expectAsync(baseHarness.elementPresent(`${tag}-element-text`)).toBeResolvedTo(true) + await expectAsync(baseHarness.elementText(`${tag}-element-text`)).toBeResolvedTo(`${tag} text`) + + await expectAsync(baseHarness.elementPresent(`${tag}-element-text-non-existent`)).toBeResolvedTo(false) + await expectAsync(baseHarness.elementText(`${tag}-element-text-non-existent`)).toBeRejected() + } }) it('elementChildCount', async () => {