This is an automated email from the ASF dual-hosted git repository. tiagobento pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git
The following commit(s) were added to refs/heads/main by this push: new b73df80cd8a kie-issues#151: Make browser extensions work on other GitHub instances, like github.ibm.com (#2126) b73df80cd8a is described below commit b73df80cd8a617c9c577c3e045face4c89558ccc Author: Jozef Marko <jozef.ma...@ibm.com> AuthorDate: Mon Jan 29 17:32:48 2024 +0100 kie-issues#151: Make browser extensions work on other GitHub instances, like github.ibm.com (#2126) Co-authored-by: Tiago Bento <1584568+tiagobe...@users.noreply.github.com> --- .../manifest.dev.json | 4 +- .../manifest.prod.json | 4 +- packages/chrome-extension/src/Logger.ts | 4 + packages/chrome-extension/src/app/Dependencies.ts | 13 ++- .../src/app/components/common/GitHubContext.tsx | 15 ++- .../src/app/components/common/KogitoMenu.tsx | 6 +- .../OpenInExternalEditorButton.tsx | 8 +- .../openRepoInExternalEditorApp.tsx | 3 +- .../src/app/components/pr/PrEditorsApp.tsx | 22 ++++- .../src/app/components/pr/prEditors.tsx | 15 ++- .../src/app/components/single/singleEditorView.tsx | 1 - .../src/app/github/GitHubPageType.ts | 6 +- packages/chrome-extension/src/index.ts | 103 +++++++++++++++------ packages/chrome-extension/tests/index.test.ts | 20 +++- 14 files changed, 165 insertions(+), 59 deletions(-) diff --git a/packages/chrome-extension-pack-kogito-kie-editors/manifest.dev.json b/packages/chrome-extension-pack-kogito-kie-editors/manifest.dev.json index 99bede0733a..0b291071649 100644 --- a/packages/chrome-extension-pack-kogito-kie-editors/manifest.dev.json +++ b/packages/chrome-extension-pack-kogito-kie-editors/manifest.dev.json @@ -7,8 +7,8 @@ { "run_at": "document_idle", "js": ["content_scripts/github.js"], - "matches": ["https://*.github.com/*"], - "all_frames": true + "matches": ["https://*/*", "http://*/*"], + "all_frames": false } ], "icons": { "16": "resources/icon_16.png", "48": "resources/icon_48.png", "128": "resources/icon_128.png" }, diff --git a/packages/chrome-extension-pack-kogito-kie-editors/manifest.prod.json b/packages/chrome-extension-pack-kogito-kie-editors/manifest.prod.json index e85e605d4b7..80c54ee8561 100644 --- a/packages/chrome-extension-pack-kogito-kie-editors/manifest.prod.json +++ b/packages/chrome-extension-pack-kogito-kie-editors/manifest.prod.json @@ -7,8 +7,8 @@ { "run_at": "document_idle", "js": ["content_scripts/github.js"], - "matches": ["https://*.github.com/*"], - "all_frames": true + "matches": ["https://*/*", "http://*/*"], + "all_frames": false } ], "icons": { "16": "resources/icon_16.png", "48": "resources/icon_48.png", "128": "resources/icon_128.png" }, diff --git a/packages/chrome-extension/src/Logger.ts b/packages/chrome-extension/src/Logger.ts index 6b1ef6d93b5..a3ead530df2 100644 --- a/packages/chrome-extension/src/Logger.ts +++ b/packages/chrome-extension/src/Logger.ts @@ -27,4 +27,8 @@ export class Logger { public log(...args: any[]) { console.debug(`[${this.extensionName}] -> `, ...args); } + + public warn(...args: any[]) { + console.warn(`[${this.extensionName}] -> `, ...args); + } } diff --git a/packages/chrome-extension/src/app/Dependencies.ts b/packages/chrome-extension/src/app/Dependencies.ts index 1b6faac1bed..fec63f4f4be 100644 --- a/packages/chrome-extension/src/app/Dependencies.ts +++ b/packages/chrome-extension/src/app/Dependencies.ts @@ -62,7 +62,7 @@ export class Dependencies { public readonly openRepoInExternalEditor = { buttonContainerOnRepoHome: () => { - return document.querySelector("#repository-details-container .pagehead-actions") as HTMLElement | null; + return document.querySelector(".pagehead-actions") as HTMLElement | null; }, buttonContainerOnRepoFilesList: () => { return document.querySelector(".d-flex.gap-2")?.parentElement as HTMLElement | null; @@ -73,6 +73,9 @@ export class Dependencies { }; public readonly all = { + octiconMarkGitHub: () => { + return document.querySelector(".octicon-mark-github") as HTMLElement | null; + }, notificationIndicator: () => { return (document.querySelector(".notification-indicator") ?? document.querySelector(".AppHeader-search")) as HTMLElement | null; @@ -89,9 +92,15 @@ export class Dependencies { edit__githubTextAreaWithFileContents: () => { return document.getElementById("kie-tools__initial-content") as HTMLTextAreaElement | null; }, - pr__mutationObserverTarget: () => { + pr__filesMutationObserverTarget: () => { return document.getElementById("files") as HTMLElement | null; }, + pr__commitsMutationObserverTarget: () => { + return document.getElementById("commits_bucket") as HTMLElement | null; + }, + pr__homeMutationObserverTarget: () => { + return document.querySelector(".pull-discussion-timeline") as HTMLElement | null; + }, pr__openWithExternalEditorLinkContainer: (container: HTMLElement) => { return container.querySelectorAll("details-menu a")[0] as HTMLAnchorElement | null; }, diff --git a/packages/chrome-extension/src/app/components/common/GitHubContext.tsx b/packages/chrome-extension/src/app/components/common/GitHubContext.tsx index 1c14f1e6a5b..e0db3c787da 100644 --- a/packages/chrome-extension/src/app/components/common/GitHubContext.tsx +++ b/packages/chrome-extension/src/app/components/common/GitHubContext.tsx @@ -53,6 +53,17 @@ export function getCookie(name: string) { } } +export function getGitHubApiBaseUrl(baseUrl: string) { + if (baseUrl.startsWith("https://")) { + return "https://api." + baseUrl.slice(8); + } else if (baseUrl.startsWith("http://")) { + return "http://api." + baseUrl.slice(7); + } else { + console.error(`Unsupported protocol for GitHub API base URL: ${baseUrl}`); + return; + } +} + let octokitInstance: Octokit; export const GitHubContextProvider: React.FC<{}> = (props) => { @@ -70,10 +81,10 @@ export const GitHubContextProvider: React.FC<{}> = (props) => { useEffect(() => { if (token) { - octokitInstance = new Octokit({ auth: token }); + octokitInstance = new Octokit({ auth: token, baseUrl: getGitHubApiBaseUrl(window.location.origin) }); console.debug("Token found"); } else { - octokitInstance = new Octokit(); + octokitInstance = new Octokit({ baseUrl: getGitHubApiBaseUrl(window.location.origin) }); console.debug("Token not found."); } setReady(true); diff --git a/packages/chrome-extension/src/app/components/common/KogitoMenu.tsx b/packages/chrome-extension/src/app/components/common/KogitoMenu.tsx index e690461fa42..6ca24a314da 100644 --- a/packages/chrome-extension/src/app/components/common/KogitoMenu.tsx +++ b/packages/chrome-extension/src/app/components/common/KogitoMenu.tsx @@ -19,7 +19,7 @@ import * as React from "react"; import { useCallback, useEffect, useRef, useState } from "react"; -import { useGitHubApi } from "./GitHubContext"; +import { getGitHubApiBaseUrl, useGitHubApi } from "./GitHubContext"; import { Octokit } from "@octokit/rest"; import { useGlobals } from "./GlobalContext"; import { useChromeExtensionI18n } from "../../i18n"; @@ -100,7 +100,7 @@ export function KogitoMenu() { <a target={"blank"} className="Header-link mr-0 mr-lg-3 py-2 py-lg-0" - href="https://github.com/settings/tokens" + href={window.location.origin + "/settings/tokens"} > {i18n.common.menu.createToken} </a> @@ -176,7 +176,7 @@ async function tokenIsValid(token?: string) { return false; } - const testOctokit = new Octokit({ auth: token }); + const testOctokit = new Octokit({ auth: token, baseUrl: getGitHubApiBaseUrl(window.location.origin) }); return await testOctokit.emojis .get({}) .then(() => true) diff --git a/packages/chrome-extension/src/app/components/openRepoInExternalEditor/OpenInExternalEditorButton.tsx b/packages/chrome-extension/src/app/components/openRepoInExternalEditor/OpenInExternalEditorButton.tsx index 6eea6e340f2..e8e35a5ea40 100644 --- a/packages/chrome-extension/src/app/components/openRepoInExternalEditor/OpenInExternalEditorButton.tsx +++ b/packages/chrome-extension/src/app/components/openRepoInExternalEditor/OpenInExternalEditorButton.tsx @@ -26,9 +26,13 @@ import { GitHubPageType } from "../../github/GitHubPageType"; export function OpenInExternalEditorButton(props: { className: string; pageType: GitHubPageType }) { const globals = useGlobals(); const repoUrl = useMemo(() => { - if (props.pageType === GitHubPageType.PR_HOME || props.pageType === GitHubPageType.PR_FILES_OR_COMMITS) { + if ( + props.pageType === GitHubPageType.PR_HOME || + props.pageType === GitHubPageType.PR_FILES || + props.pageType === GitHubPageType.PR_COMMITS + ) { const prInfo = parsePrInfo(globals.dependencies); - return `https://github.com/${prInfo.org}/${prInfo.repo}/tree/${prInfo.gitRef}`; + return `${window.location.origin}/${prInfo.org}/${prInfo.repo}/tree/${prInfo.gitRef}`; } return window.location.href; diff --git a/packages/chrome-extension/src/app/components/openRepoInExternalEditor/openRepoInExternalEditorApp.tsx b/packages/chrome-extension/src/app/components/openRepoInExternalEditor/openRepoInExternalEditorApp.tsx index e3869e23508..a55504b9cc0 100644 --- a/packages/chrome-extension/src/app/components/openRepoInExternalEditor/openRepoInExternalEditorApp.tsx +++ b/packages/chrome-extension/src/app/components/openRepoInExternalEditor/openRepoInExternalEditorApp.tsx @@ -50,7 +50,7 @@ export function renderOpenRepoInExternalEditorApp( > {ReactDOM.createPortal( <OpenInExternalEditorButton className={args.className} pageType={args.pageType} />, - GitHubPageType.REPO_HOME === args.pageType + GitHubPageType.REPO_HOME === args.pageType || GitHubPageType.CAN_NOT_BE_DETERMINED_FROM_URL === args.pageType ? openRepoInExternalEditorContainerFromRepositoryHome(args.id, args.container()) : openRepoInExternalEditorContainer(args.id, args.container()) )} @@ -64,6 +64,7 @@ function cleanup(id: string) { Array.from(document.querySelectorAll(`.${KOGITO_OPEN_REPO_IN_EXTERNAL_EDITOR_CONTAINER_CLASS}.${id}`)).forEach( (e) => { removeAllChildren(e); + e.remove(); } ); } diff --git a/packages/chrome-extension/src/app/components/pr/PrEditorsApp.tsx b/packages/chrome-extension/src/app/components/pr/PrEditorsApp.tsx index 33b0311bc83..394bfad5775 100644 --- a/packages/chrome-extension/src/app/components/pr/PrEditorsApp.tsx +++ b/packages/chrome-extension/src/app/components/pr/PrEditorsApp.tsx @@ -18,14 +18,18 @@ */ import * as React from "react"; -import { useEffect, useState } from "react"; +import { useCallback, useEffect, useState } from "react"; import { useGlobals } from "../common/GlobalContext"; import { EditorEnvelopeLocator } from "@kie-tools-core/editor/dist/api"; import { Dependencies } from "../../Dependencies"; import { getOriginalFilePath, IsolatedPrEditor, PrInfo } from "./IsolatedPrEditor"; import { Logger } from "../../../Logger"; +import { GitHubPageType } from "../../github/GitHubPageType"; -export function PrEditorsApp(props: { prInfo: PrInfo }) { +export function PrEditorsApp(props: { + prInfo: PrInfo; + pageType: GitHubPageType.PR_COMMITS | GitHubPageType.PR_FILES | GitHubPageType.PR_HOME; +}) { const globals = useGlobals(); const [prFileContainers, setPrFileContainers] = useState<HTMLElement[]>([]); @@ -34,6 +38,16 @@ export function PrEditorsApp(props: { prInfo: PrInfo }) { setPrFileContainers(supportedPrFileElements(globals.logger, globals.envelopeLocator, globals.dependencies)); }, [globals.dependencies, globals.envelopeLocator, globals.logger]); + const mutationObserverTargetNode = useCallback(() => { + if (props.pageType === GitHubPageType.PR_COMMITS) { + return globals.dependencies.all.pr__commitsMutationObserverTarget()!; + } else if (props.pageType === GitHubPageType.PR_FILES) { + return globals.dependencies.all.pr__filesMutationObserverTarget()!; + } else { + return globals.dependencies.all.pr__homeMutationObserverTarget()!; + } + }, [globals.dependencies.all, props.pageType]); + useEffect(() => { const observer = new MutationObserver((mutations) => { const addedNodes = mutations.reduce((l, r) => [...l, ...Array.from(r.addedNodes)], []); @@ -51,7 +65,7 @@ export function PrEditorsApp(props: { prInfo: PrInfo }) { setPrFileContainers(newContainers); }); - observer.observe(globals.dependencies.all.pr__mutationObserverTarget()!, { + observer.observe(mutationObserverTargetNode(), { childList: true, subtree: true, }); @@ -59,7 +73,7 @@ export function PrEditorsApp(props: { prInfo: PrInfo }) { return () => { observer.disconnect(); }; - }, [globals.dependencies, globals.envelopeLocator, globals.logger, prFileContainers]); + }, [globals.dependencies, globals.envelopeLocator, globals.logger, mutationObserverTargetNode, prFileContainers]); return ( <> diff --git a/packages/chrome-extension/src/app/components/pr/prEditors.tsx b/packages/chrome-extension/src/app/components/pr/prEditors.tsx index 0d97140abd0..39437ffeea7 100644 --- a/packages/chrome-extension/src/app/components/pr/prEditors.tsx +++ b/packages/chrome-extension/src/app/components/pr/prEditors.tsx @@ -33,7 +33,13 @@ import { PrInfo } from "./IsolatedPrEditor"; import { OpenInExternalEditorButton } from "../openRepoInExternalEditor/OpenInExternalEditorButton"; import { GitHubPageType } from "../../github/GitHubPageType"; -export function renderPrEditorsApp(args: Globals) { +export function renderPrEditorsApp( + args: Globals & { + className: string; + pageType: GitHubPageType.PR_COMMITS | GitHubPageType.PR_FILES | GitHubPageType.PR_HOME; + container: () => HTMLElement; + } +) { // Necessary because GitHub apparently "caches" DOM structures between changes on History. // Without this method you can observe duplicated elements when using back/forward browser buttons. cleanup(args.id); @@ -49,10 +55,10 @@ export function renderPrEditorsApp(args: Globals) { resourceContentServiceFactory={args.resourceContentServiceFactory} externalEditorManager={args.externalEditorManager} > - <PrEditorsApp prInfo={parsePrInfo(args.dependencies)} /> + <PrEditorsApp prInfo={parsePrInfo(args.dependencies)} pageType={args.pageType} /> {ReactDOM.createPortal( - <OpenInExternalEditorButton className={"btn btn-sm"} pageType={GitHubPageType.PR_FILES_OR_COMMITS} />, - openRepoInExternalEditorContainer(args.id, args.dependencies.openRepoInExternalEditor.buttonContainerOnPrs()!) + <OpenInExternalEditorButton className={args.className} pageType={args.pageType} />, + openRepoInExternalEditorContainer(args.id, args.container()!) )} </Main>, createAndGetMainContainer(args.id, args.dependencies.all.body()), @@ -102,6 +108,7 @@ function cleanup(id: string) { Array.from(document.querySelectorAll(`.${KOGITO_OPEN_REPO_IN_EXTERNAL_EDITOR_CONTAINER_CLASS}.${id}`)).forEach( (e) => { removeAllChildren(e); + e.remove(); } ); } diff --git a/packages/chrome-extension/src/app/components/single/singleEditorView.tsx b/packages/chrome-extension/src/app/components/single/singleEditorView.tsx index 1bbcbc60697..2633714658c 100644 --- a/packages/chrome-extension/src/app/components/single/singleEditorView.tsx +++ b/packages/chrome-extension/src/app/components/single/singleEditorView.tsx @@ -57,7 +57,6 @@ export async function renderSingleEditorReadonlyApp( args.logger.log(`Doesn't look like the GitHub page is ready yet.`); return; } - const openFileExtension = extractOpenFileExtension(window.location.href); const openFilePath = extractOpenFilePath(window.location.href); if (!openFileExtension) { diff --git a/packages/chrome-extension/src/app/github/GitHubPageType.ts b/packages/chrome-extension/src/app/github/GitHubPageType.ts index b1e7d78d1c0..c030a9e392e 100644 --- a/packages/chrome-extension/src/app/github/GitHubPageType.ts +++ b/packages/chrome-extension/src/app/github/GitHubPageType.ts @@ -20,8 +20,10 @@ export enum GitHubPageType { VIEW, EDIT, - PR_FILES_OR_COMMITS, - ANY, + PR_FILES, + PR_COMMITS, + CAN_NOT_BE_DETERMINED_FROM_URL, + NOT_SUPPORTED, PR_HOME, REPO_HOME, } diff --git a/packages/chrome-extension/src/index.ts b/packages/chrome-extension/src/index.ts index 054185bd0a2..6a2d7dbec12 100644 --- a/packages/chrome-extension/src/index.ts +++ b/packages/chrome-extension/src/index.ts @@ -91,37 +91,74 @@ function init(globals: Globals) { const fileInfo = extractFileInfoFromUrl(); const pageType = discoverCurrentGitHubPageType(); - if (pageType === GitHubPageType.ANY) { - globals.logger.log(`This GitHub page is not supported.`); + if (!globals.dependencies.all.octiconMarkGitHub() || pageType === GitHubPageType.NOT_SUPPORTED) { + globals.logger.warn( + `This is not supported GitHub web page. '${window.location.origin}${window.location.pathname}'` + ); return; } if (pageType === GitHubPageType.EDIT) { renderSingleEditorApp({ ...globals, fileInfo }); } else if (pageType === GitHubPageType.VIEW) { - renderSingleEditorReadonlyApp({ - ...globals, - pageType, - className: "btn ml-2 d-none d-md-block", - container: () => globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoFilesList()!, - fileInfo, - }); - } else if (pageType === GitHubPageType.PR_FILES_OR_COMMITS) { - renderPrEditorsApp({ ...globals }); - } else if (pageType === GitHubPageType.PR_HOME) { - renderOpenRepoInExternalEditorApp({ - ...globals, - pageType, - className: "btn btn-sm", - container: () => globals.dependencies.openRepoInExternalEditor.buttonContainerOnPrs()!, - }); + if (!globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoFilesList()) { + globals.logger.warn( + "The extension stopped working for this asset view. Please be sure you explore the asset with the latest GitHub instance." + ); + } else { + renderSingleEditorReadonlyApp({ + ...globals, + pageType, + className: "btn ml-2 d-none d-md-block", + container: () => globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoFilesList()!, + fileInfo, + }); + } + } else if ( + pageType === GitHubPageType.PR_HOME || + pageType === GitHubPageType.PR_FILES || + pageType === GitHubPageType.PR_COMMITS + ) { + if (!globals.dependencies.openRepoInExternalEditor.buttonContainerOnPrs()) { + globals.logger.warn( + "The extension stopped working for this pull request view. Please be sure you explore the pull request on the latest GitHub instance." + ); + } else { + renderPrEditorsApp({ + ...globals, + pageType, + className: "btn btn-sm", + container: () => globals.dependencies.openRepoInExternalEditor.buttonContainerOnPrs()!, + }); + } } else if (pageType === GitHubPageType.REPO_HOME) { - renderOpenRepoInExternalEditorApp({ - ...globals, - pageType, - className: "btn btn-sm", - container: () => globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoHome()!, - }); + if (!globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoHome()) { + globals.logger.warn( + "The extension stopped working for this repository view. Please be sure you explore the repository on the latest GitHub instance." + ); + } else { + renderOpenRepoInExternalEditorApp({ + ...globals, + pageType, + className: "btn btn-sm", + container: () => globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoHome()!, + }); + } + } else if (pageType === GitHubPageType.CAN_NOT_BE_DETERMINED_FROM_URL) { + // if user uses [GITHUBINSTANCE_BASE_URL]/[ORG]/[REPO] we can not determine it from the url, but it may be still valid scenario for this chrome-extension + if (!globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoHome()) { + globals.logger.warn( + `The extension stopped working for this view '${window.location.origin}${window.location.pathname}'. Please be sure you explore repository, asset or pull request on the latest GitHub instance.` + ); + } else { + // presence of the 'buttonContainerOnRepoHome' locator should mean, user is really on the repository home screen view + renderOpenRepoInExternalEditorApp({ + ...globals, + pageType, + className: "btn btn-sm", + container: () => globals.dependencies.openRepoInExternalEditor.buttonContainerOnRepoHome()!, + }); + } } else { throw new Error(`Unknown GitHubPageType ${pageType}`); } @@ -177,27 +214,33 @@ export function discoverCurrentGitHubPageType() { return GitHubPageType.VIEW; } - const isOrgSlashRepo = window.location.pathname.split("/").length === 3; const isOrgSlashRepoSlashTreeSlashName = window.location.pathname.split("/tree/").length === 2 && !window.location.pathname.split("/tree/")[1].includes("/"); - if (isOrgSlashRepo || isOrgSlashRepoSlashTreeSlashName) { + if (isOrgSlashRepoSlashTreeSlashName) { return GitHubPageType.REPO_HOME; } if (pathnameMatches(`.*/.*/pull/[0-9]+/files.*`)) { - return GitHubPageType.PR_FILES_OR_COMMITS; + return GitHubPageType.PR_FILES; } if (pathnameMatches(`.*/.*/pull/[0-9]+/commits.*`)) { - return GitHubPageType.PR_FILES_OR_COMMITS; + return GitHubPageType.PR_COMMITS; } - if (pathnameMatches(`.*/.*/pull/[0-9]+.*`)) { + if (pathnameMatches(`^.*/.*/pull/[0-9]+$`)) { return GitHubPageType.PR_HOME; } - return GitHubPageType.ANY; + if (["/tree/", "/pull/"].some((pathnamePart) => window.location.pathname.includes(pathnamePart))) { + // if pathanme containing one of these substrings and didn't match previous `if` statements, then it is not supperted by our extension + // .../tree/main/some/folders/only + // .../pull/1/checks + return GitHubPageType.NOT_SUPPORTED; + } + + return GitHubPageType.CAN_NOT_BE_DETERMINED_FROM_URL; } export * from "./ExternalEditorManager"; diff --git a/packages/chrome-extension/tests/index.test.ts b/packages/chrome-extension/tests/index.test.ts index 54b5563ee4c..58161ffd0a8 100644 --- a/packages/chrome-extension/tests/index.test.ts +++ b/packages/chrome-extension/tests/index.test.ts @@ -56,7 +56,7 @@ describe("discoverCurrentGitHubPageType", () => { test("repo home", async () => { setWindowLocationPathname("github.com/organization/repositoryName"); const type = index.discoverCurrentGitHubPageType(); - expect(type).toStrictEqual(GitHubPageType.REPO_HOME); + expect(type).toStrictEqual(GitHubPageType.CAN_NOT_BE_DETERMINED_FROM_URL); }); test("repo home with branch", async () => { @@ -65,6 +65,12 @@ describe("discoverCurrentGitHubPageType", () => { expect(type).toStrictEqual(GitHubPageType.REPO_HOME); }); + test("repo folder with branch", async () => { + setWindowLocationPathname("github.com/organization/repositoryName/tree/main/some/folders/here"); + const type = index.discoverCurrentGitHubPageType(); + expect(type).toStrictEqual(GitHubPageType.NOT_SUPPORTED); + }); + test("pr home", async () => { setWindowLocationPathname("/org/repo/pull/1"); const type = index.discoverCurrentGitHubPageType(); @@ -74,18 +80,24 @@ describe("discoverCurrentGitHubPageType", () => { test("pr files", async () => { setWindowLocationPathname("/org/repo/pull/1/files"); const type = index.discoverCurrentGitHubPageType(); - expect(type).toStrictEqual(GitHubPageType.PR_FILES_OR_COMMITS); + expect(type).toStrictEqual(GitHubPageType.PR_FILES); }); test("pr commit", async () => { setWindowLocationPathname("/org/repo/pull/1/commits"); const type = index.discoverCurrentGitHubPageType(); - expect(type).toStrictEqual(GitHubPageType.PR_FILES_OR_COMMITS); + expect(type).toStrictEqual(GitHubPageType.PR_COMMITS); + }); + + test("pr checks", async () => { + setWindowLocationPathname("/org/repo/pull/1/checks"); + const type = index.discoverCurrentGitHubPageType(); + expect(type).toStrictEqual(GitHubPageType.NOT_SUPPORTED); }); test("any", async () => { setWindowLocationPathname("/"); const type = index.discoverCurrentGitHubPageType(); - expect(type).toStrictEqual(GitHubPageType.ANY); + expect(type).toStrictEqual(GitHubPageType.CAN_NOT_BE_DETERMINED_FROM_URL); }); }); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@kie.apache.org For additional commands, e-mail: commits-h...@kie.apache.org