From 2c087c4568d138a35f39ccc7c1f8d9841af6d0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Doreau?= Date: Thu, 27 May 2021 13:53:44 +0200 Subject: [PATCH] feat(cypress): techdocs fixture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Rémi Doreau --- app-config.yaml | 4 +- cypress/e2e-fixture.catalog.info.yaml | 11 +++ cypress/fixtures/docs/index.md | 3 + cypress/fixtures/docs/sub-page-one.md | 37 ++++++++ cypress/fixtures/docs/sub-page-three.md | 41 +++++++++ cypress/fixtures/docs/sub-page-two.md | 43 ++++++++++ cypress/fixtures/mkdocs.yml | 10 +++ .../src/integration/plugins/techdocs.spec.ts | 85 +++++++++---------- cypress/src/support/commands.ts | 21 ++--- cypress/src/types.d.ts | 6 +- scripts/check-docs-quality.js | 1 + 11 files changed, 204 insertions(+), 58 deletions(-) create mode 100644 cypress/e2e-fixture.catalog.info.yaml create mode 100644 cypress/fixtures/docs/index.md create mode 100644 cypress/fixtures/docs/sub-page-one.md create mode 100644 cypress/fixtures/docs/sub-page-three.md create mode 100644 cypress/fixtures/docs/sub-page-two.md create mode 100644 cypress/fixtures/mkdocs.yml diff --git a/app-config.yaml b/app-config.yaml index 074e28c086..28f680ec6f 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -250,7 +250,9 @@ catalog: # Backstage example groups and users - type: file target: ../catalog-model/examples/acme-corp.yaml - + # Backstage end-to-end tests of TechDocs + - type: file + target: ../../cypress/e2e-fixture.catalog.info.yaml scaffolder: # Use to customize default commit author info used when new components are created # defaultAuthor: diff --git a/cypress/e2e-fixture.catalog.info.yaml b/cypress/e2e-fixture.catalog.info.yaml new file mode 100644 index 0000000000..31502e415d --- /dev/null +++ b/cypress/e2e-fixture.catalog.info.yaml @@ -0,0 +1,11 @@ +apiVersion: backstage.io/v1alpha1 +kind: Component +metadata: + name: techdocs-e2e-fixture + description: Used for end-to-end tests of TechDocs in Backstage. + annotations: + backstage.io/techdocs-ref: dir:./fixtures +spec: + type: service + lifecycle: experimental + owner: user:guest diff --git a/cypress/fixtures/docs/index.md b/cypress/fixtures/docs/index.md new file mode 100644 index 0000000000..d7ff14b46d --- /dev/null +++ b/cypress/fixtures/docs/index.md @@ -0,0 +1,3 @@ +# Home page + +This is a basic documentation used for end-to-end tests. diff --git a/cypress/fixtures/docs/sub-page-one.md b/cypress/fixtures/docs/sub-page-one.md new file mode 100644 index 0000000000..2289445805 --- /dev/null +++ b/cypress/fixtures/docs/sub-page-one.md @@ -0,0 +1,37 @@ +# Subpage 1 + +## Section 1.1 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. + +## Section 1.2 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. + +## Section 1.3 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. diff --git a/cypress/fixtures/docs/sub-page-three.md b/cypress/fixtures/docs/sub-page-three.md new file mode 100644 index 0000000000..8d00ab5730 --- /dev/null +++ b/cypress/fixtures/docs/sub-page-three.md @@ -0,0 +1,41 @@ +# Subpage 3 + +## Section 3.1 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. + +## Section 3.2 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +### Sub-Section 3.2.1 + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +### Sub-Section 3.2.2 + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. + +## Section 3.3 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. diff --git a/cypress/fixtures/docs/sub-page-two.md b/cypress/fixtures/docs/sub-page-two.md new file mode 100644 index 0000000000..e5acc4aba5 --- /dev/null +++ b/cypress/fixtures/docs/sub-page-two.md @@ -0,0 +1,43 @@ +# Subpage 2 + +## Section 2.1 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. + +## Section 2.2 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +### Sub-Section 2.2.1 + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +### Sub-Section 2.2.2 + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. + +## Section 2.3 + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent eleifend posuere varius. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque eu vulputate dolor. Duis aliquet ex non velit tincidunt, a congue justo mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce at condimentum turpis. Praesent non vestibulum mi. Sed tellus arcu, lobortis non convallis quis, dignissim vel mauris. Donec ultrices consectetur turpis eu mollis. + +Etiam auctor sem est, vitae tempor augue ornare vitae. Sed pulvinar imperdiet enim, id tempor risus varius vel. Sed dictum ex eget est bibendum egestas. Mauris quis turpis commodo turpis luctus gravida. Nulla facilisis ligula turpis, nec luctus odio rhoncus nec. Nam sed faucibus turpis. Suspendisse imperdiet sem ut justo porta commodo. Maecenas vitae blandit libero. Vivamus consequat interdum nunc at porta. Praesent ut magna viverra, tristique nulla in, condimentum lorem. + +Suspendisse potenti. Quisque facilisis nisl enim, non ultrices ligula vehicula vitae. Ut eleifend cursus semper. Cras sed congue tortor. Aliquam at porta ante, vitae pretium diam. Curabitur tincidunt lorem vitae augue tincidunt convallis. Pellentesque eget neque vitae libero dignissim dictum. Nullam vitae ipsum accumsan risus auctor dapibus. Cras erat nunc, rhoncus venenatis ultrices vel, bibendum vitae nibh. Aliquam condimentum eget purus non faucibus. Suspendisse at sem dictum, facilisis sapien sit amet, eleifend nisl. Maecenas urna ante, fringilla aliquam efficitur quis, interdum quis mauris. Nunc molestie risus vitae metus tincidunt, non laoreet libero volutpat. Proin eu tellus lectus. Pellentesque at tincidunt leo, porttitor vehicula orci. + +Vivamus mollis libero nec ex consectetur, ac faucibus magna tristique. Praesent maximus sem tristique lectus faucibus, ac semper velit venenatis. Donec mattis auctor turpis vitae scelerisque. Sed at ipsum vitae odio viverra porta quis eget urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam vulputate lorem euismod venenatis suscipit. Aenean condimentum vel nulla quis tristique. Sed nisi ante, imperdiet nec dolor nec, interdum pharetra eros. Proin egestas vestibulum malesuada. + +Aliquam erat volutpat. Suspendisse ornare nisl in mauris tristique semper. In et odio finibus lorem dapibus sollicitudin nec ut elit. Cras laoreet luctus luctus. Suspendisse a enim dolor. Aliquam ac eros maximus, dictum dolor vel, placerat metus. Cras auctor arcu justo, nec fermentum dui cursus eu. Duis id ultrices diam. Vivamus quis dictum diam, nec gravida tellus. + +[Link to Section 1.1](sub-page-one.md#section-11) diff --git a/cypress/fixtures/mkdocs.yml b/cypress/fixtures/mkdocs.yml new file mode 100644 index 0000000000..f4def221c3 --- /dev/null +++ b/cypress/fixtures/mkdocs.yml @@ -0,0 +1,10 @@ +site_name: e2e Fixture Documentation +site_description: Documentation used for end-to-end tests of TechDocs in Backstage. +nav: + - Home: index.md + - Subpage 1: sub-page-one.md + - Subpage 2: sub-page-two.md + - Nested Subpages: + - Subpage 3: sub-page-three.md +plugins: + - techdocs-core diff --git a/cypress/src/integration/plugins/techdocs.spec.ts b/cypress/src/integration/plugins/techdocs.spec.ts index 6b06a5adf8..14aa5c5f8c 100644 --- a/cypress/src/integration/plugins/techdocs.spec.ts +++ b/cypress/src/integration/plugins/techdocs.spec.ts @@ -42,59 +42,64 @@ describe('TechDocs', () => { it('should navigate to a specific TechDocs entity from the "Overview" tab', () => { cy.visit('/docs'); - cy.get('[data-testid="read_docs"]').eq(0).click(); + cy.contains('techdocs-e2e-fixture') + .parents() + .eq(2) + .contains('Read Docs') + .click(); cy.location().should(loc => { - expect(loc.pathname).to.eq('/docs/default/Component/backstage'); + expect(loc.pathname).to.eq( + '/docs/default/Component/techdocs-e2e-fixture', + ); }); }); it('should navigate to a specific TechDocs entity from the "Owned documents" tab', () => { cy.visit('/docs'); cy.get('[data-testid="header-tab-1"]').click(); - cy.get('[value="backstage"] > div > a').click(); + cy.get('[value="techdocs-e2e-fixture"] > div > a').click(); cy.location().should(loc => { - expect(loc.pathname).to.eq('/docs/default/Component/backstage'); + expect(loc.pathname).to.eq( + '/docs/default/Component/techdocs-e2e-fixture', + ); }); }); it('should navigate to a specific TechDocs entity page from a URL', () => { - cy.visit('/docs/default/Component/backstage'); + cy.visit('/docs/default/Component/techdocs-e2e-fixture'); cy.waitHomePage(); - cy.contains('Backstage'); + cy.contains('e2e Fixture Documentation'); cy.contains( - 'Main documentation for Backstage features and platform APIs', - ); - cy.getTechDocsShadowRoot().contains( - 'The Backstage documentation is available at', + 'Documentation used for end-to-end tests of TechDocs in Backstage.', ); + cy.getTechDocsShadowRoot().contains('Home page'); }); it('should navigate to a specific TechDocs section from a URL', () => { - cy.visit('/docs/default/Component/backstage/overview/roadmap'); - cy.waitRoadmapPage(); + cy.visit('/docs/default/Component/techdocs-e2e-fixture/sub-page-two'); + cy.waitSectionTwoPage(); cy.window().its('scrollY').should('equal', 0); cy.getTechDocsShadowRoot().within(() => { - cy.contains('Phases'); - cy.contains('Detailed roadmap'); + cy.contains('Subpage 2'); }); }); it('should navigate to a specific TechDocs fragment from a URL', () => { cy.visit( - '/docs/default/Component/backstage/overview/roadmap/#future-work', + '/docs/default/Component/techdocs-e2e-fixture/sub-page-two#section-23', ); - cy.waitRoadmapPage(); + cy.waitSectionTwoPage(); // This is used to test the post-render behavior of the techdocs Reader cy.wait(500); return cy.getTechDocsShadowRoot().within(() => { - cy.get('#future-work').then($el => { + cy.get('#section-23').then($el => { cy.window() .its('scrollY') .should($scrollY => { @@ -113,39 +118,31 @@ describe('TechDocs', () => { describe('Navigating within TechDocs', () => { it('should navigate to a specific TechDocs page via the navigation bar', () => { - cy.visit('/docs/default/Component/backstage'); + cy.visit('/docs/default/Component/techdocs-e2e-fixture'); cy.waitHomePage(); cy.getTechDocsShadowRoot().within(() => { - const overviewNavigation = cy - .getTechDocsNavigation() - .find('> div > div > [data-md-level="0"] > ul > li:nth-child(1)'); - overviewNavigation.within(() => { - // Overview - cy.get('> input').click({ force: true }); - }); - overviewNavigation.within(() => { - // Project Roadmap - cy.get('> [data-md-level="1"] > ul > li:nth-child(3) > a').click(); - }); - cy.contains('Phases'); - cy.contains('Detailed roadmap'); + cy.getTechDocsNavigation() + .find('> div > div > [data-md-level="0"] > ul > li:nth-child(2) > a') + .click(); + cy.contains('Subpage 1'); + cy.window().its('scrollY').should('eq', 0); }); }); describe('Navigating within a TechDocs page', () => { beforeEach(() => { - cy.visit('/docs/default/Component/backstage/overview/roadmap'); - cy.waitRoadmapPage(); + cy.visit('/docs/default/Component/techdocs-e2e-fixture/sub-page-two'); + cy.waitSectionTwoPage(); }); it('should navigate to a specific fragment within the page via the table of contents - Level 1', () => { return cy.getTechDocsShadowRoot().within(() => { - // Phases + // Section 3 cy.getTechDocsTableOfContents().within(() => { - cy.get('> div > div > nav > ul > li:nth-child(2) > a').click(); + cy.get('> div > div > nav > ul > li:nth-child(3) > a').click(); }); - cy.get('#phases').then($el => { + cy.get('#section-23').then($el => { cy.window() .its('scrollY') .should($scrollY => { @@ -157,14 +154,14 @@ describe('TechDocs', () => { it('should navigate to a specific fragment within the page via the table of contents - Level 2', () => { return cy.getTechDocsShadowRoot().within(() => { - // Future work + // Section 2.2 cy.getTechDocsTableOfContents() .find( - '> div > div > nav > ul > li:nth-child(3) > nav > ul > li:nth-child(2) > a', + '> div > div > nav > ul > li:nth-child(2) > nav > ul > li:nth-child(2) > a', ) .click(); - cy.get('#future-work').then($el => { + cy.get('#sub-section-222').then($el => { cy.window() .its('scrollY') .should($scrollY => { @@ -177,14 +174,14 @@ describe('TechDocs', () => { it('should navigate to a specific TechDocs page fragment from a link', () => { return cy.getTechDocsShadowRoot().within(() => { cy.get('.md-content > article') - .contains('upgrade their installation') + .contains('Link to Section 1.1') .click(); cy.location().should(loc => { expect(loc.pathname).to.eq( - '/docs/default/Component/backstage/cli/commands/', + '/docs/default/Component/techdocs-e2e-fixture/sub-page-one/', ); - expect(loc.hash).to.eq('#versionsbump'); + expect(loc.hash).to.eq('#section-11'); }); }); }); @@ -197,7 +194,7 @@ describe('TechDocs', () => { cy.location().should(loc => { expect(loc.pathname).to.eq( - '/docs/default/Component/backstage/overview/vision/', + '/docs/default/Component/techdocs-e2e-fixture/sub-page-three/', ); }); }); @@ -211,7 +208,7 @@ describe('TechDocs', () => { cy.location().should(loc => { expect(loc.pathname).to.eq( - '/docs/default/Component/backstage/overview/architecture-overview/', + '/docs/default/Component/techdocs-e2e-fixture/sub-page-one/', ); }); }); diff --git a/cypress/src/support/commands.ts b/cypress/src/support/commands.ts index 71c9eda54b..21a5235186 100644 --- a/cypress/src/support/commands.ts +++ b/cypress/src/support/commands.ts @@ -52,35 +52,36 @@ Cypress.Commands.add('mockSockJSNode', () => { Cypress.Commands.add('interceptTechDocsAPICalls', () => { cy.intercept( 'GET', - '**/techdocs/metadata/entity/default/Component/backstage', + '**/techdocs/metadata/entity/default/Component/techdocs-e2e-fixture', ).as('entityMetadata'); cy.intercept( 'GET', - '**/techdocs/metadata/techdocs/default/Component/backstage', + '**/techdocs/metadata/techdocs/default/Component/techdocs-e2e-fixture', ).as('techdocsMetadata'); - cy.intercept('GET', '**/techdocs/sync/default/Component/backstage').as( - 'syncEntity', - ); + cy.intercept( + 'GET', + '**/techdocs/sync/default/Component/techdocs-e2e-fixture', + ).as('syncEntity'); cy.intercept( 'GET', - '**/techdocs/static/docs/default/Component/backstage/overview/roadmap/index.html', - ).as('roadmapHTML'); + '**/techdocs/static/docs/default/Component/techdocs-e2e-fixture/sub-page-two/index.html', + ).as('sectionTwoHTML'); cy.intercept( 'GET', - '**/techdocs/static/docs/default/Component/backstage/index.html', + '**/techdocs/static/docs/default/Component/techdocs-e2e-fixture/index.html', ).as('homeHTML'); }); -Cypress.Commands.add('waitRoadmapPage', () => { +Cypress.Commands.add('waitSectionTwoPage', () => { cy.wait([ '@entityMetadata', '@syncEntity', '@techdocsMetadata', - '@roadmapHTML', + '@sectionTwoHTML', ]); }); diff --git a/cypress/src/types.d.ts b/cypress/src/types.d.ts index bb4a8f2fc9..f458ea83f4 100644 --- a/cypress/src/types.d.ts +++ b/cypress/src/types.d.ts @@ -58,14 +58,14 @@ declare namespace Cypress { */ mockSockJSNode(): Chainable; /** - * Wait TechDocs API response for Backstage home page + * Wait TechDocs API response for home page * @example cy.waitHomePage */ waitHomePage(): Chainable; /** - * Wait TechDocs API response for Backstage rodmap page + * Wait TechDocs API response for Section 2 page * @example cy.waitRoadmapPage */ - waitRoadmapPage(): Chainable; + waitSectionTwoPage(): Chainable; } } diff --git a/scripts/check-docs-quality.js b/scripts/check-docs-quality.js index 4a07aeb3bd..3352596890 100755 --- a/scripts/check-docs-quality.js +++ b/scripts/check-docs-quality.js @@ -42,6 +42,7 @@ const getFilesToLint = () => { // Note this ignore list only applies locally, CI runs `.github/workflows/docs-quality-checker.yml` const ignored = ['', 'ADOPTERS.md', 'OWNERS.md']; + return execSync(command, { stdio: ['ignore', 'pipe', 'inherit'], })