Files
ComfyUI_frontend/browser_tests/fixtures/components/CancelSubscriptionDialog.ts
Dante 2c772077e0 test: add E2E tests for billing dialogs (CancelSubscription, TopUpCredits) (#10969)
## Summary
- Add Playwright E2E tests for `CancelSubscriptionDialogContent` and
`TopUpCreditsDialogContentLegacy`
- CancelSubscription tests: dialog display with date formatting, keep
subscription dismiss, confirm cancel with mocked API, error handling on
API failure
- TopUpCredits tests: dialog display with preset amounts, insufficient
credits variant, preset selection, close button dismiss, pricing link
visibility

Part of the FixIt Burndown test coverage initiative (Untested Dialogs).

## Test plan
- [ ] Verify tests pass in CI against OSS build
- [ ] `pnpm test:browser:local --
browser_tests/tests/dialogs/cancelSubscriptionDialog.spec.ts`
- [ ] `pnpm test:browser:local --
browser_tests/tests/dialogs/topUpCreditsDialog.spec.ts`

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-10969-test-add-E2E-tests-for-billing-dialogs-CancelSubscription-TopUpCredits-33c6d73d36508164b268c08c99464ca1)
by [Unito](https://www.unito.io)
2026-04-21 23:17:58 +00:00

33 lines
948 B
TypeScript

import type { Locator, Page } from '@playwright/test'
import type { WorkspaceStore } from '@e2e/types/globals'
import { BaseDialog } from '@e2e/fixtures/components/BaseDialog'
export class CancelSubscriptionDialog extends BaseDialog {
readonly heading: Locator
readonly keepSubscriptionButton: Locator
readonly confirmCancelButton: Locator
constructor(page: Page) {
super(page)
this.heading = this.root.getByRole('heading', {
name: 'Cancel subscription'
})
this.keepSubscriptionButton = this.root.getByRole('button', {
name: 'Keep subscription'
})
this.confirmCancelButton = this.root.getByRole('button', {
name: 'Cancel subscription'
})
}
async open(cancelAt?: string) {
await this.page.evaluate((date) => {
void (
window.app!.extensionManager as WorkspaceStore
).dialog.showCancelSubscriptionDialog(date)
}, cancelAt)
await this.waitForVisible()
}
}