From 877f46c1777f16acf84b3884a2a5c5ab59bf90d5 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Fri, 29 Jan 2021 16:15:34 -0500 Subject: [PATCH 1/6] Support custom status codes --- .../reader/components/TechDocsNotFound.test.tsx | 17 +++++++++++++++++ .../src/reader/components/TechDocsNotFound.tsx | 5 +++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx b/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx index d3c98fec78..c6562ec8ad 100644 --- a/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsNotFound.test.tsx @@ -41,3 +41,20 @@ describe('', ( expect(rendered.getByTestId('go-back-link')).toBeDefined(); }); }); + +describe('', () => { + it('should render with a custom status code, custom error message and go back link', () => { + const rendered = render( + wrapInTestApp( + , + ), + ); + rendered.getByText(/This is a custom error message/i); + rendered.getByText(/500/i); + rendered.getByText(/Looks like someone dropped the mic!/i); + expect(rendered.getByTestId('go-back-link')).toBeDefined(); + }); +}); diff --git a/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx b/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx index cdacc1cb7e..04f2106161 100644 --- a/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx +++ b/plugins/techdocs/src/reader/components/TechDocsNotFound.tsx @@ -19,9 +19,10 @@ import { ErrorPage, useApi, configApiRef } from '@backstage/core'; type Props = { errorMessage?: string; + statusCode?: number; }; -export const TechDocsNotFound = ({ errorMessage }: Props) => { +export const TechDocsNotFound = ({ errorMessage, statusCode }: Props) => { const techdocsBuilder = useApi(configApiRef).getOptionalString( 'techdocs.builder', ); @@ -37,7 +38,7 @@ export const TechDocsNotFound = ({ errorMessage }: Props) => { return ( From cb61bc8cbb3c0d58dcfc4d74aaeeeb38bb6df263 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Fri, 29 Jan 2021 16:16:14 -0500 Subject: [PATCH 2/6] Hardcode file not found status --- plugins/techdocs/src/reader/components/Reader.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index 1264e2b6eb..c9e76ddeeb 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -155,7 +155,7 @@ export const Reader = ({ entityId, onReady }: Props) => { ]); if (error) { - return ; + return ; } return ( From 45de779d5fa75721dd8bb1865c3e63a8ba8c4976 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Fri, 29 Jan 2021 16:20:07 -0500 Subject: [PATCH 3/6] Add changeset --- .changeset/green-rabbits-burn.md | 5 +++++ plugins/techdocs/src/api.ts | 24 ++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 .changeset/green-rabbits-burn.md diff --git a/.changeset/green-rabbits-burn.md b/.changeset/green-rabbits-burn.md new file mode 100644 index 0000000000..5af68c2000 --- /dev/null +++ b/.changeset/green-rabbits-burn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs': patch +--- + +Enhance API calls to support trapping 500 errors from techdocs-backend diff --git a/plugins/techdocs/src/api.ts b/plugins/techdocs/src/api.ts index 3a950aeeb3..5f2cf924d7 100644 --- a/plugins/techdocs/src/api.ts +++ b/plugins/techdocs/src/api.ts @@ -119,14 +119,22 @@ export class TechDocsStorageApi implements TechDocsStorage { `${url.endsWith('/') ? url : `${url}/`}index.html`, ); - if (request.status === 404) { - let errorMessage = 'Page not found. '; - // path is empty for the home page of an entity's docs site - if (!path) { - errorMessage += - 'This could be because there is no index.md file in the root of the docs directory of this repository.'; - } - throw new Error(errorMessage); + let errorMessage = ''; + switch (request.status) { + case 404: + errorMessage = 'Page not found. '; + // path is empty for the home page of an entity's docs site + if (!path) { + errorMessage += + 'This could be because there is no index.md file in the root of the docs directory of this repository.'; + } + throw new Error(errorMessage); + case 500: + errorMessage = 'Could not generate documentation. '; + throw new Error(errorMessage); + default: + // Do nothing + break; } return request.text(); From 96dbdfbb41a65524411cce4544abd1f64fba4ded Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Sun, 31 Jan 2021 22:02:25 -0500 Subject: [PATCH 4/6] Update error message --- plugins/techdocs/src/api.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/techdocs/src/api.ts b/plugins/techdocs/src/api.ts index 5f2cf924d7..fc007503fa 100644 --- a/plugins/techdocs/src/api.ts +++ b/plugins/techdocs/src/api.ts @@ -130,7 +130,8 @@ export class TechDocsStorageApi implements TechDocsStorage { } throw new Error(errorMessage); case 500: - errorMessage = 'Could not generate documentation. '; + errorMessage = + 'Could not generate documentation or an error in the TechDocs backend. '; throw new Error(errorMessage); default: // Do nothing From 8f3443427287abf6408d686739bc2fc84043fe27 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Fri, 5 Feb 2021 10:49:12 -0500 Subject: [PATCH 5/6] Rename green-rabbits-burn.md to techdocs-green-rabbits-burn.md --- .../{green-rabbits-burn.md => techdocs-green-rabbits-burn.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .changeset/{green-rabbits-burn.md => techdocs-green-rabbits-burn.md} (100%) diff --git a/.changeset/green-rabbits-burn.md b/.changeset/techdocs-green-rabbits-burn.md similarity index 100% rename from .changeset/green-rabbits-burn.md rename to .changeset/techdocs-green-rabbits-burn.md From fd933c4239e4099034f6c0bafd6a124f5d78f85b Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Fri, 5 Feb 2021 10:50:11 -0500 Subject: [PATCH 6/6] Add comment TODO --- plugins/techdocs/src/reader/components/Reader.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/techdocs/src/reader/components/Reader.tsx b/plugins/techdocs/src/reader/components/Reader.tsx index c9e76ddeeb..f1937ae8a8 100644 --- a/plugins/techdocs/src/reader/components/Reader.tsx +++ b/plugins/techdocs/src/reader/components/Reader.tsx @@ -155,6 +155,8 @@ export const Reader = ({ entityId, onReady }: Props) => { ]); if (error) { + // TODO Enhance API call to return customize error objects so we can identify which we ran into + // For now this defaults to display error code 404 return ; }