The commit view *within* a PR doesn't get injected (#282)
* The commit view *within* a PR doesn't get injected Fixes #280 * Add specific return for consistency * Better test * Add e2e test * Typo
This commit is contained in:
@ -8,6 +8,7 @@ import {
|
|||||||
getGithubCommitUrlParams,
|
getGithubCommitUrlParams,
|
||||||
createReactRoot,
|
createReactRoot,
|
||||||
getGithubBlobUrlParams,
|
getGithubBlobUrlParams,
|
||||||
|
getGithubCommitWithinPullUrlParams,
|
||||||
} from './web'
|
} from './web'
|
||||||
import gitHubInjection from 'github-injection'
|
import gitHubInjection from 'github-injection'
|
||||||
|
|
||||||
@ -128,6 +129,15 @@ async function run() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const commitWithinPullParams = getGithubCommitWithinPullUrlParams(url)
|
||||||
|
if (commitWithinPullParams) {
|
||||||
|
const { owner, repo, pull, sha } = commitWithinPullParams
|
||||||
|
console.log('Found commit diff within pull: ', owner, repo, pull, sha)
|
||||||
|
// TODO: understand if more things are needed here for this special case
|
||||||
|
await injectCommitDiff(owner, repo, sha, window.document)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const blobParams = getGithubBlobUrlParams(url)
|
const blobParams = getGithubBlobUrlParams(url)
|
||||||
if (blobParams) {
|
if (blobParams) {
|
||||||
const { owner, repo, sha, filename } = blobParams
|
const { owner, repo, sha, filename } = blobParams
|
||||||
|
@ -8,6 +8,7 @@ import {
|
|||||||
getSupportedWebDiffElements,
|
getSupportedWebDiffElements,
|
||||||
createReactRoot,
|
createReactRoot,
|
||||||
getGithubBlobUrlParams,
|
getGithubBlobUrlParams,
|
||||||
|
getGithubCommitWithinPullUrlParams,
|
||||||
} from './web'
|
} from './web'
|
||||||
|
|
||||||
const githubPullHtmlSnippet = `
|
const githubPullHtmlSnippet = `
|
||||||
@ -147,6 +148,29 @@ describe('Function getGithubCommitUrlParams', () => {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('Function getGithubCommitWithinPullUrlParams', () => {
|
||||||
|
it('gets params out of a valid github commit link within a PR', () => {
|
||||||
|
const url =
|
||||||
|
'https://github.com/KittyCAD/diff-samples/pull/2/commits/1dc0d43a94dba95279fcfc112bb5dd4dfaac01ae'
|
||||||
|
const params = getGithubCommitWithinPullUrlParams(url)
|
||||||
|
expect(params).toBeDefined()
|
||||||
|
const { owner, repo, pull, sha } = params!
|
||||||
|
expect(owner).toEqual('KittyCAD')
|
||||||
|
expect(repo).toEqual('diff-samples')
|
||||||
|
expect(pull).toEqual(2)
|
||||||
|
expect(sha).toEqual('1dc0d43a94dba95279fcfc112bb5dd4dfaac01ae')
|
||||||
|
})
|
||||||
|
|
||||||
|
it("doesn't match other URLs", () => {
|
||||||
|
expect(getGithubCommitWithinPullUrlParams('http://google.com')).toBeUndefined()
|
||||||
|
expect(
|
||||||
|
getGithubCommitWithinPullUrlParams(
|
||||||
|
'https://github.com/KittyCAD/litterbox/commit/4ddf899550addf41d6bf1b790ce79e46501411b3'
|
||||||
|
)
|
||||||
|
).toBeUndefined()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('Function getGithubBlobUrlParams', () => {
|
describe('Function getGithubBlobUrlParams', () => {
|
||||||
it('gets params out of a valid github blob link', () => {
|
it('gets params out of a valid github blob link', () => {
|
||||||
const url =
|
const url =
|
||||||
|
@ -44,6 +44,34 @@ export function getGithubCommitUrlParams(
|
|||||||
return { owner, repo, sha }
|
return { owner, repo, sha }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type GithubCommitWithinPullUrlParams = {
|
||||||
|
owner: string
|
||||||
|
repo: string
|
||||||
|
pull: number
|
||||||
|
sha: string
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getGithubCommitWithinPullUrlParams(
|
||||||
|
url: string
|
||||||
|
): GithubCommitWithinPullUrlParams | undefined {
|
||||||
|
const pullRe =
|
||||||
|
/https:\/\/github\.com\/([a-zA-Z0-9_.-]+)\/([a-zA-Z0-9_.-]+)\/pull\/(\d+)\/commits\/(\w+)/
|
||||||
|
const result = pullRe.exec(url)
|
||||||
|
if (!result) {
|
||||||
|
return undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
const [, owner, repo, pull, sha] = result
|
||||||
|
console.log(
|
||||||
|
'Found a supported Github Commit witin Pull URL:',
|
||||||
|
owner,
|
||||||
|
repo,
|
||||||
|
pull,
|
||||||
|
sha
|
||||||
|
)
|
||||||
|
return { owner, repo, sha, pull: parseInt(pull) }
|
||||||
|
}
|
||||||
|
|
||||||
export type GithubBlobUrlParams = {
|
export type GithubBlobUrlParams = {
|
||||||
owner: string
|
owner: string
|
||||||
repo: string
|
repo: string
|
||||||
|
@ -68,6 +68,20 @@ test('pull request diff with a modified .obj file', async ({
|
|||||||
expect(screenshot2).toMatchSnapshot()
|
expect(screenshot2).toMatchSnapshot()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('commit diff within pull request with a modified .stl file', async ({
|
||||||
|
page,
|
||||||
|
authorizedBackground,
|
||||||
|
}) => {
|
||||||
|
const url = 'https://github.com/KittyCAD/diff-samples/pull/2/commits/1dc0d43a94dba95279fcfc112bb5dd4dfaac01ae'
|
||||||
|
const element = await getFirstDiffElement(page, url, 'stl')
|
||||||
|
const screenshot = await element.screenshot()
|
||||||
|
expect(screenshot).toMatchSnapshot()
|
||||||
|
|
||||||
|
await enableCombined(page, element)
|
||||||
|
const screenshot2 = await element.screenshot()
|
||||||
|
expect(screenshot2).toMatchSnapshot()
|
||||||
|
})
|
||||||
|
|
||||||
test('pull request diff with a modified .step file', async ({
|
test('pull request diff with a modified .step file', async ({
|
||||||
page,
|
page,
|
||||||
authorizedBackground,
|
authorizedBackground,
|
||||||
|
Binary file not shown.
After Width: | Height: | Size: 100 KiB |
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
Reference in New Issue
Block a user