Skip to content

Commit

Permalink
enhance base harness testing
Browse files Browse the repository at this point in the history
use elementPresent to check that elements exist/don't exist in test template to make sure test setup is complete;
  • Loading branch information
antonborisoff committed Feb 29, 2024
1 parent 97e52a1 commit 66b296e
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 44 deletions.
14 changes: 14 additions & 0 deletions src/app/tests/foundation/tests/test.component.harness.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) {

Check failure on line 11 in src/app/tests/foundation/tests/test.component.harness.ts

View workflow job for this annotation

GitHub Actions / execute-pr-checks

Missing return type on function
const cssSelector = this.getCssSelector(id, [
'h1',
'p',
'div',
'button'
])
const element = await this.locatorForOptional(cssSelector)()
return !!element
}
}
93 changes: 49 additions & 44 deletions src/app/tests/foundation/tests/test.component.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down

0 comments on commit 66b296e

Please sign in to comment.