Skip to content

Commit f8dee79

Browse files
authored
fix(web-awesome): restore test-level error display in overview header (fixes #695, via #696)
1 parent 60571e3 commit f8dee79

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

packages/e2e/test/allure-awesome/test/testResult.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ test.describe("allure-awesome", () => {
377377
expect(clipboardContent).toEqual("sample.js#0 sample passed test");
378378
});
379379

380-
test("failed test renders its test-level error in the body section", async () => {
380+
test("failed test renders its test-level error in the overview header and body section", async () => {
381381
await treePage.openTestResultByTitle("1 sample failed test");
382382

383383
const errorStep = testResultPage.getStepByName("Assertion error: Expected 1 to be 2");
@@ -387,26 +387,26 @@ test.describe("allure-awesome", () => {
387387
"Assertion error: Expected 1 to be 2",
388388
);
389389
await expect(testResultPage.page.getByText("No test steps information available")).not.toBeVisible();
390-
expect(await countStandaloneOverviewErrors(testResultPage)).toBe(0);
390+
expect(await countStandaloneOverviewErrors(testResultPage)).toBe(1);
391391

392392
await testResultPage.expandStepByTitle("Assertion error: Expected 1 to be 2");
393393

394394
await expect(errorStep.stepDetailsLocator.getByTestId("test-result-error-message")).toHaveCount(0);
395395
await expect(errorStep.stepTraceLocator).toHaveText("failed test trace");
396-
await expect(testResultPage.errorDiffButtonLocator).toBeVisible();
397-
await testResultPage.errorDiffButtonLocator.click();
396+
await expect(errorStep.stepDetailsLocator.getByTestId("test-result-diff-button")).toBeVisible();
397+
await errorStep.stepDetailsLocator.getByTestId("test-result-diff-button").click();
398398
await expect(testResultPage.errorDiffLocator).toBeVisible();
399399
});
400400

401-
test("broken test renders its test-level error in the body section", async () => {
401+
test("broken test renders its test-level error in the overview header and body section", async () => {
402402
await treePage.openTestResultByTitle("2 sample broken test");
403403

404404
const errorStep = testResultPage.getStepByName("An unexpected error");
405405

406406
await expect(errorStep.locator).toBeVisible();
407407
await expect(errorStep.locator.getByTestId("test-result-step-title")).toHaveText("An unexpected error");
408408
await expect(testResultPage.page.getByText("No test steps information available")).not.toBeVisible();
409-
expect(await countStandaloneOverviewErrors(testResultPage)).toBe(0);
409+
expect(await countStandaloneOverviewErrors(testResultPage)).toBe(1);
410410

411411
await testResultPage.expandStepByTitle("An unexpected error");
412412

packages/web-awesome/src/components/TestResult/TrOverview.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import type { FunctionalComponent } from "preact";
22
import type { AwesomeTestResult } from "types";
33

4-
import { getBodyItems } from "@/components/TestResult/bodyItems";
4+
import { getBodyItems, isDisplayableTestError } from "@/components/TestResult/bodyItems";
55
import TestStepsEmpty from "@/components/TestResult/TestStepsEmpty";
66
import { TrDescription } from "@/components/TestResult/TrDescription";
7+
import { TrError } from "@/components/TestResult/TrError";
78
import { TrLinks } from "@/components/TestResult/TrLinks";
89
import { TrMetadata } from "@/components/TestResult/TrMetadata";
910
import { TrParameters } from "@/components/TestResult/TrParameters";
@@ -23,17 +24,23 @@ export type TrOverviewProps = {
2324

2425
export const TrOverview: FunctionalComponent<TrOverviewProps> = ({ testResult }) => {
2526
useTestResultOverviewFocusScroll();
26-
const { parameters, groupedLabels, links, descriptionHtml, setup, teardown, id } = testResult || {};
27+
const { parameters, groupedLabels, links, descriptionHtml, setup, teardown, id, error, status } = testResult || {};
2728
const testResultId = id ?? currentTrId.value;
2829
const { t } = useI18n("ui");
2930
const bodyItems = getBodyItems(testResult, t("error"));
3031
const isNoSteps = !setup?.length && !bodyItems.length && !teardown?.length;
3132
const pwTraces = testResult?.attachments?.filter(
3233
(attachment) => attachment.link.contentType === "application/vnd.allure.playwright-trace",
3334
);
35+
const showTopError = (status === "failed" || status === "broken") && isDisplayableTestError(error);
3436

3537
return (
3638
<>
39+
{showTopError && (
40+
<div className={styles["test-result-errors"]}>
41+
<TrError {...error} status={status} />
42+
</div>
43+
)}
3744
{Boolean(pwTraces?.length) && <TrPwTraces pwTraces={pwTraces} />}
3845
{Boolean(parameters?.length) && <TrParameters id={testResultId} parameters={parameters} />}
3946
{Boolean(groupedLabels && Object.keys(groupedLabels || {})?.length) && (

0 commit comments

Comments
 (0)