diff --git a/CHANGELOG.md b/CHANGELOG.md index 48e4965f..7b9ab630 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). ## [Unreleased] +### Added +- Render hook names if present ([#137](https://github.com/cucumber/cucumber-react/pull/137)) ### Changed - Scenario outline styling - Examples changed to H3 and aligned with steps diff --git a/package-lock.json b/package-lock.json index 776709d4..3581acb1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ }, "devDependencies": { "@babel/core": "7.17.9", - "@cucumber/compatibility-kit": "^9.1.2", + "@cucumber/compatibility-kit": "^9.2.0", "@cucumber/fake-cucumber": "^15.0.0", "@cucumber/gherkin": "^23.0.1", "@cucumber/gherkin-streams": "^5.0.1", @@ -1992,10 +1992,13 @@ } }, "node_modules/@cucumber/compatibility-kit": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@cucumber/compatibility-kit/-/compatibility-kit-9.1.2.tgz", - "integrity": "sha512-oB01JROFcwFfbqMV+jtJtj8bWU6mrLPUomuki/f9TvXsHMjYgqkBopeJqjcWWtgIfA7Y2CZEnTMWdLxoyBd4RA==", - "dev": true + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/compatibility-kit/-/compatibility-kit-9.2.0.tgz", + "integrity": "sha512-NsXLgmVorgBIJpNrP6ISqIsFD62XCfmzAmgVE0HEz5DkfRbE78adT1UvzzAvrlJPNOG5FX6RF3Ss9Sg/f8gYOg==", + "dev": true, + "dependencies": { + "@cucumber/message-streams": "^4.0.1" + } }, "node_modules/@cucumber/create-meta": { "version": "6.0.4", @@ -2116,30 +2119,6 @@ "@cucumber/messages": "^17.0.0" } }, - "node_modules/@cucumber/fake-cucumber/node_modules/@cucumber/messages": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-17.1.1.tgz", - "integrity": "sha512-KQMn2Ag+1g1CXp/zKQ7LLqmuHjuQwuXw0N2u5SrDk8r72zPt36SxmDSJK7w6HiFTI+3p5ZuzwLi4S5jop3Tx4g==", - "dev": true, - "dependencies": { - "@types/uuid": "8.3.1", - "class-transformer": "0.4.0", - "reflect-metadata": "0.1.13", - "uuid": "8.3.2" - } - }, - "node_modules/@cucumber/fake-cucumber/node_modules/@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==", - "dev": true - }, - "node_modules/@cucumber/fake-cucumber/node_modules/class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==", - "dev": true - }, "node_modules/@cucumber/fake-cucumber/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -2208,27 +2187,6 @@ "gherkin-utils": "bin/gherkin-utils" } }, - "node_modules/@cucumber/gherkin-utils/node_modules/@cucumber/messages": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-17.1.1.tgz", - "integrity": "sha512-KQMn2Ag+1g1CXp/zKQ7LLqmuHjuQwuXw0N2u5SrDk8r72zPt36SxmDSJK7w6HiFTI+3p5ZuzwLi4S5jop3Tx4g==", - "dependencies": { - "@types/uuid": "8.3.1", - "class-transformer": "0.4.0", - "reflect-metadata": "0.1.13", - "uuid": "8.3.2" - } - }, - "node_modules/@cucumber/gherkin-utils/node_modules/@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==" - }, - "node_modules/@cucumber/gherkin-utils/node_modules/class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" - }, "node_modules/@cucumber/gherkin-utils/node_modules/commander": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.1.0.tgz", @@ -2266,27 +2224,6 @@ "@teppeis/multimaps": "2.0.0" } }, - "node_modules/@cucumber/query/node_modules/@cucumber/messages": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-17.1.1.tgz", - "integrity": "sha512-KQMn2Ag+1g1CXp/zKQ7LLqmuHjuQwuXw0N2u5SrDk8r72zPt36SxmDSJK7w6HiFTI+3p5ZuzwLi4S5jop3Tx4g==", - "dependencies": { - "@types/uuid": "8.3.1", - "class-transformer": "0.4.0", - "reflect-metadata": "0.1.13", - "uuid": "8.3.2" - } - }, - "node_modules/@cucumber/query/node_modules/@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==" - }, - "node_modules/@cucumber/query/node_modules/class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" - }, "node_modules/@cucumber/tag-expressions": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@cucumber/tag-expressions/-/tag-expressions-4.1.0.tgz", @@ -29585,10 +29522,13 @@ } }, "@cucumber/compatibility-kit": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@cucumber/compatibility-kit/-/compatibility-kit-9.1.2.tgz", - "integrity": "sha512-oB01JROFcwFfbqMV+jtJtj8bWU6mrLPUomuki/f9TvXsHMjYgqkBopeJqjcWWtgIfA7Y2CZEnTMWdLxoyBd4RA==", - "dev": true + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/@cucumber/compatibility-kit/-/compatibility-kit-9.2.0.tgz", + "integrity": "sha512-NsXLgmVorgBIJpNrP6ISqIsFD62XCfmzAmgVE0HEz5DkfRbE78adT1UvzzAvrlJPNOG5FX6RF3Ss9Sg/f8gYOg==", + "dev": true, + "requires": { + "@cucumber/message-streams": "^4.0.1" + } }, "@cucumber/create-meta": { "version": "6.0.4", @@ -29646,7 +29586,7 @@ "@cucumber/gherkin-streams": "^4.0.0", "@cucumber/gherkin-utils": "^7.0.0", "@cucumber/message-streams": "^3.0.0", - "@cucumber/messages": "^17.1.1", + "@cucumber/messages": "^18.0.0", "@cucumber/tag-expressions": "^4.0.2", "@types/stack-utils": "2.0.1", "commander": "8.2.0", @@ -29661,7 +29601,7 @@ "dev": true, "requires": { "@cucumber/message-streams": "^3.0.0", - "@cucumber/messages": "^17.1.1" + "@cucumber/messages": "^18.0.0" } }, "@cucumber/gherkin-streams": { @@ -29672,7 +29612,7 @@ "requires": { "@cucumber/gherkin": "^21.0.0", "@cucumber/message-streams": "^3.0.0", - "@cucumber/messages": "^17.1.0", + "@cucumber/messages": "^18.0.0", "commander": "8.1.0", "source-map-support": "0.5.19" }, @@ -29684,7 +29624,7 @@ "dev": true, "requires": { "@cucumber/message-streams": "^3.0.0", - "@cucumber/messages": "^17.1.0" + "@cucumber/messages": "^18.0.0" } }, "commander": { @@ -29701,33 +29641,9 @@ "integrity": "sha512-ABx91nKUebV8mLmpf7BsB3bmQ57CDAfj2EIZswThz+nJHYPAFlZ1JewI6ykFsR9RzJ7/QhgQs0KHeQh7nH/u1Q==", "dev": true, "requires": { - "@cucumber/messages": "^17.0.0" + "@cucumber/messages": "^18.0.0" } }, - "@cucumber/messages": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-17.1.1.tgz", - "integrity": "sha512-KQMn2Ag+1g1CXp/zKQ7LLqmuHjuQwuXw0N2u5SrDk8r72zPt36SxmDSJK7w6HiFTI+3p5ZuzwLi4S5jop3Tx4g==", - "dev": true, - "requires": { - "@types/uuid": "8.3.1", - "class-transformer": "0.4.0", - "reflect-metadata": "0.1.13", - "uuid": "8.3.2" - } - }, - "@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==", - "dev": true - }, - "class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==", - "dev": true - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -29778,32 +29694,11 @@ "resolved": "https://registry.npmjs.org/@cucumber/gherkin-utils/-/gherkin-utils-7.0.0.tgz", "integrity": "sha512-tDkSRITTPA6Df501doqeRH3+1jAM4ls6+tlFEVvkvuzTH3C8DXwQ5xBPWmUNmDhR/gJeZ+yj7gDRbDWr7Qc6Zw==", "requires": { - "@cucumber/messages": "^17.1.0", + "@cucumber/messages": "^18.0.0", "@teppeis/multimaps": "2.0.0", "commander": "8.1.0" }, "dependencies": { - "@cucumber/messages": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-17.1.1.tgz", - "integrity": "sha512-KQMn2Ag+1g1CXp/zKQ7LLqmuHjuQwuXw0N2u5SrDk8r72zPt36SxmDSJK7w6HiFTI+3p5ZuzwLi4S5jop3Tx4g==", - "requires": { - "@types/uuid": "8.3.1", - "class-transformer": "0.4.0", - "reflect-metadata": "0.1.13", - "uuid": "8.3.2" - } - }, - "@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==" - }, - "class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" - }, "commander": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.1.0.tgz", @@ -29834,31 +29729,8 @@ "resolved": "https://registry.npmjs.org/@cucumber/query/-/query-11.0.0.tgz", "integrity": "sha512-GkjZX7p8h4OiajDrBXs/4E7qKhnW5gsqVXvJRI1Vv7bREpXc1W0Gc9S4UDgtx/YQ6djs0yBrjIbSHJRtEHYnIA==", "requires": { - "@cucumber/messages": "^17.0.0", + "@cucumber/messages": "^18.0.0", "@teppeis/multimaps": "2.0.0" - }, - "dependencies": { - "@cucumber/messages": { - "version": "17.1.1", - "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-17.1.1.tgz", - "integrity": "sha512-KQMn2Ag+1g1CXp/zKQ7LLqmuHjuQwuXw0N2u5SrDk8r72zPt36SxmDSJK7w6HiFTI+3p5ZuzwLi4S5jop3Tx4g==", - "requires": { - "@types/uuid": "8.3.1", - "class-transformer": "0.4.0", - "reflect-metadata": "0.1.13", - "uuid": "8.3.2" - } - }, - "@types/uuid": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.1.tgz", - "integrity": "sha512-Y2mHTRAbqfFkpjldbkHGY8JIzRN6XqYRliG8/24FcHm2D2PwW24fl5xMRTVGdrb7iMrwCaIEbLWerGIkXuFWVg==" - }, - "class-transformer": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/class-transformer/-/class-transformer-0.4.0.tgz", - "integrity": "sha512-ETWD/H2TbWbKEi7m9N4Km5+cw1hNcqJSxlSYhsLsNjQzWWiZIYA1zafxpK9PwVfaZ6AqR5rrjPVUBGESm5tQUA==" - } } }, "@cucumber/tag-expressions": { diff --git a/package.json b/package.json index 9e47ca47..47dc670c 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ }, "devDependencies": { "@babel/core": "7.17.9", - "@cucumber/compatibility-kit": "^9.1.2", + "@cucumber/compatibility-kit": "^9.2.0", "@cucumber/fake-cucumber": "^15.0.0", "@cucumber/gherkin": "^23.0.1", "@cucumber/gherkin-streams": "^5.0.1", @@ -104,6 +104,9 @@ "ts-jest": "^27.1.4", "typescript": "4.6.3" }, + "overrides": { + "@cucumber/messages": "^18.0.0" + }, "bugs": { "url": "https://github.com/cucumber/cucumber/issues" }, diff --git a/src/components/gherkin/HookStep.spec.tsx b/src/components/gherkin/HookStep.spec.tsx index 053e2c4e..0d932af2 100644 --- a/src/components/gherkin/HookStep.spec.tsx +++ b/src/components/gherkin/HookStep.spec.tsx @@ -149,4 +149,39 @@ describe('', () => { expect(container).toHaveTextContent('Hook failed: MyHooks.doSetup') }) + + it('renders the name when present for a failed hook', () => { + const step: messages.TestStep = { + id: '123', + hookId: '456', + } + + const { container } = render(, { + cucumberQuery: new StubCucumberQuery( + [ + { + status: messages.TestStepResultStatus.FAILED, + message: 'whoops', + duration: { + seconds: 1, + nanos: 0, + }, + }, + ], + { + id: '456', + name: 'fancy hook!', + sourceReference: { + uri: 'features/support/hooks.js', + location: { + line: 4, + column: 6, + }, + }, + } + ), + }) + + expect(container).toHaveTextContent('Hook "fancy hook!" failed:') + }) }) diff --git a/src/components/gherkin/HookStep.tsx b/src/components/gherkin/HookStep.tsx index d49bd884..d91b1eed 100644 --- a/src/components/gherkin/HookStep.tsx +++ b/src/components/gherkin/HookStep.tsx @@ -29,7 +29,7 @@ const DefaultRenderer: React.FunctionComponent = ({ step }) => { return ( - Hook failed: {location} + {hook?.name ? `Hook "${hook.name}"` : 'Hook'} failed: {location} {stepResult.message && } {attachments.map((attachment, i) => (