diff --git a/.changeset/techdocs-eight-camels-hear.md b/.changeset/techdocs-eight-camels-hear.md
index 0d6c16f725..5c3df10c89 100644
--- a/.changeset/techdocs-eight-camels-hear.md
+++ b/.changeset/techdocs-eight-camels-hear.md
@@ -4,5 +4,4 @@
Add feedback link icon in Techdocs Reader that directs to Gitlab or Github repo issue page with prefilled title and source link.
For link to appear, requires repo_url and edit_uri to be filled in mkdocs.yml, as per https://www.mkdocs.org/user-guide/configuration. edit_uri will need to be specified for self-hosted Gitlab/Github with different hostnames.
-Gitlab or Github detection checks for 'gitlab' or 'github' in hostname of source in repo_url;
-additionally 'techdocs.feedback.gitlab' and '.github' in app config can be used to specify hostnames that should be recognised as the respective Git hosting for the feedback link.
+To identify issue URL format as Github or Gitlab, the hostname of source in repo_url is checked if it contains 'gitlab' or 'github'. Alternately this is determined by matching to 'host' values from 'integrations' in app-config.yaml.
diff --git a/docs/features/techdocs/FAQ.md b/docs/features/techdocs/FAQ.md
index 5ce71ebfad..3b479f2a15 100644
--- a/docs/features/techdocs/FAQ.md
+++ b/docs/features/techdocs/FAQ.md
@@ -45,3 +45,15 @@ metadata annotation is used in the build process of TechDocs. But when
annotation should still be present in entity descriptor file (e.g.
`catalog-info.yaml`) for Backstage to know that TechDocs is enabled for the
entity.
+
+#### Is it possible for users to suggest changes or provide feedback on a TechDocs page?
+
+This is supported for TechDocs sites whose source code is hosted in either
+GitHub or GitLab. In order to add "edit this page" and "leave feedback" buttons
+on a TechDocs page, be sure that you have `repo_url` and `edit_uri` values in
+your `mkdocs.yml` files per
+[MkDocs instructions](https://www.mkdocs.org/user-guide/configuration).
+
+If the hostname of your source code hosting URL does not include 'github' or
+'gitlab', an `integrations` entry in your `app-config.yaml` pointed at your
+source code provider is also needed (only the `host` key is necessary).
diff --git a/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.test.ts b/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.test.ts
index cc451c3a25..4c9ea04fe9 100644
--- a/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.test.ts
+++ b/plugins/techdocs/src/reader/transformers/addGitFeedbackLink.test.ts
@@ -18,8 +18,10 @@ import { createTestShadowDom } from '../../test-utils';
import { addGitFeedbackLink } from './addGitFeedbackLink';
const configApi = {
- getOptionalString: function getOptionalString(key: string) {
- return key === 'gitlab' ? 'gitlab.com' : 'github.com';
+ getConfigArray: function getConfigArray(key: string) {
+ return key === 'integrations.github'
+ ? [{ data: { host: 'self-hosted-git-hub-provider.com' } }]
+ : [];
},
};
@@ -80,7 +82,7 @@ describe('addGitFeedbackLink', () => {
- Conveyor Pipelines
+ HeaderText
`,
@@ -99,8 +101,8 @@ describe('addGitFeedbackLink', () => {
- Conveyor Pipelines
-
+ HeaderText
+
`,
@@ -112,4 +114,29 @@ describe('addGitFeedbackLink', () => {
expect(shadowDom.querySelector('#git-feedback-link')).toBeFalsy();
});
+
+ it('adds a feedback link when a Gitlab or Github source edit link is not available but hostname matches an integrations host', () => {
+ const shadowDom = createTestShadowDom(
+ `
+
+
+
+ HeaderText
+
+
+
+ `,
+ {
+ preTransformers: [addGitFeedbackLink(configApi)],
+ postTransformers: [],
+ },
+ );
+
+ expect(shadowDom.querySelector('#git-feedback-link')).toBeTruthy();
+ expect(
+ (shadowDom.querySelector('#git-feedback-link') as HTMLLinkElement)!.href,
+ ).toEqual(
+ 'https://self-hosted-git-hub-provider.com/reponame/username/issues/new?title=Documentation%20Feedback%3A%20HeaderText&body=Page%20source%3A%0Ahttps%3A%2F%2Fself-hosted-git-hub-provider.com%2Freponame%2Fusername%2Fdocs%2FTestDoc.md%0A%0AFeedback%3A',
+ );
+ });
});