diff --git a/src/material/button/testing/button-harness-filters.ts b/src/material/button/testing/button-harness-filters.ts index 90966874566a..8223f304c586 100644 --- a/src/material/button/testing/button-harness-filters.ts +++ b/src/material/button/testing/button-harness-filters.ts @@ -18,4 +18,7 @@ export interface ButtonHarnessFilters extends BaseHarnessFilters { /** Only find instances with a variant. */ variant?: ButtonVariant; + + /** Only find instances which match the given disabled state. */ + disabled?: boolean; } diff --git a/src/material/button/testing/button-harness.ts b/src/material/button/testing/button-harness.ts index 9978aaf5e773..a5668c373ed3 100644 --- a/src/material/button/testing/button-harness.ts +++ b/src/material/button/testing/button-harness.ts @@ -38,7 +38,10 @@ export class MatButtonHarness extends ContentContainerComponentHarness { ) .addOption('variant', options.variant, (harness, variant) => HarnessPredicate.stringMatches(harness.getVariant(), variant), - ); + ) + .addOption('disabled', options.disabled, async (harness, disabled) => { + return (await harness.isDisabled()) === disabled; + }); } /** diff --git a/src/material/button/testing/shared.spec.ts b/src/material/button/testing/shared.spec.ts index e7a516347a91..3bdc0370ac50 100644 --- a/src/material/button/testing/shared.spec.ts +++ b/src/material/button/testing/shared.spec.ts @@ -50,6 +50,13 @@ export function runHarnessTests( expect(await buttons[1].getText()).toBe('Basic anchor'); }); + it('should filter by whether a button is disabled', async () => { + const enabledButtons = await loader.getAllHarnesses(buttonHarness.with({disabled: false})); + const disabledButtons = await loader.getAllHarnesses(buttonHarness.with({disabled: true})); + expect(enabledButtons.length).toBe(13); + expect(disabledButtons.length).toBe(2); + }); + it('should get disabled state', async () => { // Grab each combination of [enabled, disabled] тип [button, anchor] const [disabledFlatButton, enabledFlatAnchor] = await loader.getAllHarnesses( diff --git a/src/material/legacy-button/testing/button-harness.ts b/src/material/legacy-button/testing/button-harness.ts index 6a54403743f1..f03cbaab0f00 100644 --- a/src/material/legacy-button/testing/button-harness.ts +++ b/src/material/legacy-button/testing/button-harness.ts @@ -34,7 +34,10 @@ export class MatLegacyButtonHarness extends ContentContainerComponentHarness { ) .addOption('variant', options.variant, (harness, variant) => HarnessPredicate.stringMatches(harness.getVariant(), variant), - ); + ) + .addOption('disabled', options.disabled, async (harness, disabled) => { + return (await harness.isDisabled()) === disabled; + }); } /** diff --git a/tools/public_api_guard/material/button-testing.md b/tools/public_api_guard/material/button-testing.md index 595637c8a775..d8709c6bc07b 100644 --- a/tools/public_api_guard/material/button-testing.md +++ b/tools/public_api_guard/material/button-testing.md @@ -11,6 +11,7 @@ import { HarnessPredicate } from '@angular/cdk/testing'; // @public export interface ButtonHarnessFilters extends BaseHarnessFilters { + disabled?: boolean; text?: string | RegExp; variant?: ButtonVariant; }