From e9eb4d9608e34d2624a3cbc9cb29c0d9506c4769 Mon Sep 17 00:00:00 2001 From: weilirs <62249815+weilirs@users.noreply.github.com> Date: Thu, 9 Nov 2023 11:32:22 -0600 Subject: [PATCH] test(e2e,playwright):Solution-display-widget (#52208) --- .../SolutionViewer/project-modal.tsx | 1 + .../solution-display-widget/index.tsx | 17 ++++- .../components/project-preview-modal.tsx | 1 + e2e/solution-display-widget.spec.ts | 71 +++++++++++++++++++ 4 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 e2e/solution-display-widget.spec.ts diff --git a/client/src/components/SolutionViewer/project-modal.tsx b/client/src/components/SolutionViewer/project-modal.tsx index 0c7e57b6476..a0ef853da1d 100644 --- a/client/src/components/SolutionViewer/project-modal.tsx +++ b/client/src/components/SolutionViewer/project-modal.tsx @@ -22,6 +22,7 @@ const ProjectModal = ({ const { t } = useTranslation(); return ( - + {viewText}{' '} @@ -118,10 +121,18 @@ export function SolutionDisplayWidget({ - + {viewCode} - + {viewProject} diff --git a/client/src/templates/Challenges/components/project-preview-modal.tsx b/client/src/templates/Challenges/components/project-preview-modal.tsx index 9e23fae68ac..af73dca0797 100644 --- a/client/src/templates/Challenges/components/project-preview-modal.tsx +++ b/client/src/templates/Challenges/components/project-preview-modal.tsx @@ -55,6 +55,7 @@ function ProjectPreviewModal({ return ( { + await page.goto('/settings'); +}); + +test('Multifile dropdown testing', async ({ page }) => { + const multifile_dropdown = page.getByTestId('multifile-dropdown'); + const isVisible = await multifile_dropdown.isVisible(); + if (isVisible) { + await multifile_dropdown.click(); + const multifile_dropdown_code = page.getByTestId('multifile-dropdown-code'); + const multifile_dropdown_project = page.getByTestId( + 'multifile-dropdown-project' + ); + await expect(multifile_dropdown_code).toBeVisible(); + await expect(multifile_dropdown_project).toBeVisible(); + + await multifile_dropdown_code.click(); + const project_solution_viewer_modal = page.getByTestId( + 'project-solution-viewer-modal' + ); + await expect(project_solution_viewer_modal).toBeVisible(); + const close_button = page.locator('button.close'); + await close_button.click(); + + await multifile_dropdown.click(); + await multifile_dropdown_project.click(); + const project_preview_modal = page.getByTestId('project-preview-modal'); + await expect(project_preview_modal).toBeVisible(); + } +}); + +test('Single Solution testing', async ({ page }) => { + const solution_button = page.getByRole('button', { + name: /Solution for Palindrome Checker/i + }); + const isVisible = await solution_button.isVisible(); + if (isVisible) { + await solution_button.click(); + const solution_viewer_modal = page.getByTestId( + 'project-solution-viewer-modal' + ); + await expect(solution_viewer_modal).toBeVisible(); + } +}); + +test('External solution testing', async ({ page }) => { + const solution_button = page + .getByRole('button', { + name: /Solution for Build a Random Quote Machine/i + }) + .first(); + const isVisible = await solution_button.isVisible(); + if (isVisible) { + const browserContext = page.context(); + + const [newPage] = await Promise.all([ + browserContext.waitForEvent('page'), + solution_button.click() + ]); + + await newPage.waitForLoadState(); + + await expect(newPage).toHaveURL(/^https:\/\/codepen\.io/); + + await newPage.close(); + } +});