diff --git a/browser_tests/fixtures/selectors.ts b/browser_tests/fixtures/selectors.ts index 0fecdbeefe9..765ba31961f 100644 --- a/browser_tests/fixtures/selectors.ts +++ b/browser_tests/fixtures/selectors.ts @@ -28,10 +28,15 @@ export const TestIds = { settingsTabAbout: 'settings-tab-about', confirm: 'confirm-dialog', errorOverlay: 'error-overlay', + errorOverlaySeeErrors: 'error-overlay-see-errors', runtimeErrorPanel: 'runtime-error-panel', missingNodeCard: 'missing-node-card', + errorCardFindOnGithub: 'error-card-find-on-github', + errorCardCopy: 'error-card-copy', about: 'about-panel', - whatsNewSection: 'whats-new-section' + whatsNewSection: 'whats-new-section', + missingNodePacksGroup: 'error-group-missing-node', + missingModelsGroup: 'error-group-missing-model' }, keybindings: { presetMenu: 'keybinding-preset-menu' @@ -76,6 +81,10 @@ export const TestIds = { }, user: { currentUserIndicator: 'current-user-indicator' + }, + errors: { + imageLoadError: 'error-loading-image', + videoLoadError: 'error-loading-video' } } as const @@ -101,3 +110,4 @@ export type TestIdValue = (id: string) => string > | (typeof TestIds.user)[keyof typeof TestIds.user] + | (typeof TestIds.errors)[keyof typeof TestIds.errors] diff --git a/browser_tests/tests/dialog.spec.ts b/browser_tests/tests/dialog.spec.ts index 03111e0896b..809c44d64cf 100644 --- a/browser_tests/tests/dialog.spec.ts +++ b/browser_tests/tests/dialog.spec.ts @@ -28,7 +28,7 @@ test.describe('Missing nodes in Error Overlay', { tag: '@ui' }, () => { ) await expect(errorOverlay).toBeVisible() - const missingNodesTitle = comfyPage.page.getByText(/Missing Node Packs/) + const missingNodesTitle = errorOverlay.getByText(/Missing Node Packs/) await expect(missingNodesTitle).toBeVisible() }) @@ -42,11 +42,13 @@ test.describe('Missing nodes in Error Overlay', { tag: '@ui' }, () => { ) await expect(errorOverlay).toBeVisible() - const missingNodesTitle = comfyPage.page.getByText(/Missing Node Packs/) + const missingNodesTitle = errorOverlay.getByText(/Missing Node Packs/) await expect(missingNodesTitle).toBeVisible() // Click "See Errors" to open the errors tab and verify subgraph node content - await errorOverlay.getByRole('button', { name: 'See Errors' }).click() + await errorOverlay + .getByTestId(TestIds.dialogs.errorOverlaySeeErrors) + .click() await expect(errorOverlay).not.toBeVisible() const missingNodeCard = comfyPage.page.getByTestId( @@ -75,7 +77,9 @@ test.describe('Missing nodes in Error Overlay', { tag: '@ui' }, () => { await expect(errorOverlay).toBeVisible() // Click "See Errors" to open the right side panel errors tab - await errorOverlay.getByRole('button', { name: 'See Errors' }).click() + await errorOverlay + .getByTestId(TestIds.dialogs.errorOverlaySeeErrors) + .click() await expect(errorOverlay).not.toBeVisible() // Verify MissingNodeCard is rendered in the errors tab @@ -165,17 +169,19 @@ test.describe('Error actions in Errors Tab', { tag: '@ui' }, () => { TestIds.dialogs.errorOverlay ) await expect(errorOverlay).toBeVisible() - await errorOverlay.getByRole('button', { name: 'See Errors' }).click() + await errorOverlay + .getByTestId(TestIds.dialogs.errorOverlaySeeErrors) + .click() await expect(errorOverlay).not.toBeVisible() // Verify Find on GitHub button is present in the error card - const findOnGithubButton = comfyPage.page.getByRole('button', { - name: 'Find on GitHub' - }) + const findOnGithubButton = comfyPage.page.getByTestId( + TestIds.dialogs.errorCardFindOnGithub + ) await expect(findOnGithubButton).toBeVisible() // Verify Copy button is present in the error card - const copyButton = comfyPage.page.getByRole('button', { name: 'Copy' }) + const copyButton = comfyPage.page.getByTestId(TestIds.dialogs.errorCardCopy) await expect(copyButton).toBeVisible() }) }) @@ -204,7 +210,7 @@ test.describe('Missing models in Error Tab', () => { ) await expect(errorOverlay).toBeVisible() - const missingModelsTitle = comfyPage.page.getByText(/Missing Models/) + const missingModelsTitle = errorOverlay.getByText(/Missing Models/) await expect(missingModelsTitle).toBeVisible() }) @@ -220,7 +226,7 @@ test.describe('Missing models in Error Tab', () => { ) await expect(errorOverlay).toBeVisible() - const missingModelsTitle = comfyPage.page.getByText(/Missing Models/) + const missingModelsTitle = errorOverlay.getByText(/Missing Models/) await expect(missingModelsTitle).toBeVisible() }) @@ -231,13 +237,10 @@ test.describe('Missing models in Error Tab', () => { 'missing/model_metadata_widget_mismatch' ) - const missingModelsTitle = comfyPage.page.getByText(/Missing Models/) - await expect(missingModelsTitle).not.toBeVisible() - - const errorOverlay = comfyPage.page.getByTestId( - TestIds.dialogs.errorOverlay - ) - await expect(errorOverlay).not.toBeVisible() + await expect( + comfyPage.page.getByTestId(TestIds.dialogs.errorOverlay) + ).not.toBeVisible() + await expect(comfyPage.page.getByText(/Missing Models/)).not.toBeVisible() }) // Flaky test after parallelization diff --git a/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts b/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts index 077e56a4aa1..0998c3eacb1 100644 --- a/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts +++ b/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts @@ -2,6 +2,7 @@ import { comfyExpect as expect, comfyPageFixture as test } from '../../../../fixtures/ComfyPage' +import { TestIds } from '../../../../fixtures/selectors' test.describe('Vue Upload Widgets', () => { test.beforeEach(async ({ comfyPage }) => { @@ -19,10 +20,14 @@ test.describe('Vue Upload Widgets', () => { ).not.toBeVisible() await expect - .poll(() => comfyPage.page.getByText('Error loading image').count()) + .poll(() => + comfyPage.page.getByTestId(TestIds.errors.imageLoadError).count() + ) .toBeGreaterThan(0) await expect - .poll(() => comfyPage.page.getByText('Error loading video').count()) + .poll(() => + comfyPage.page.getByTestId(TestIds.errors.videoLoadError).count() + ) .toBeGreaterThan(0) }) }) diff --git a/src/components/dialog/content/error/FindIssueButton.vue b/src/components/dialog/content/error/FindIssueButton.vue index 767202251f5..7ec89ebc86a 100644 --- a/src/components/dialog/content/error/FindIssueButton.vue +++ b/src/components/dialog/content/error/FindIssueButton.vue @@ -19,10 +19,7 @@ const props = defineProps<{ const queryString = computed(() => props.errorMessage + ' is:issue') -/** - * Open GitHub issues search and track telemetry. - */ -const openGitHubIssues = () => { +function openGitHubIssues() { useTelemetry()?.trackUiButtonClicked({ button_id: 'error_dialog_find_existing_issues_clicked' }) diff --git a/src/components/error/ErrorOverlay.vue b/src/components/error/ErrorOverlay.vue index be599a39958..f5d74c2285a 100644 --- a/src/components/error/ErrorOverlay.vue +++ b/src/components/error/ErrorOverlay.vue @@ -49,7 +49,12 @@ -