From 3bf47a10b8b2d1c2bbfb2ca488ec02fa02c577ba Mon Sep 17 00:00:00 2001 From: Pierre Jacquier Date: Tue, 16 Jan 2024 04:39:38 -0500 Subject: [PATCH] Fix blob viewer (new UI) (#521) * Fix blob viewer (new UI) Fixes #371 * Add step test and update snaps * Better selector --- src/chrome/content.ts | 11 ------ src/components/viewer/CadBlobPage.tsx | 36 +++++------------- src/components/viewer/CadDiff.tsx | 7 +--- tests/extension.spec.ts | 33 ++++++++++------ ...view-with-a-step-file-1-chromium-linux.png | Bin 0 -> 23247 bytes ...view-with-an-obj-file-1-chromium-linux.png | Bin 142961 -> 133425 bytes 6 files changed, 32 insertions(+), 55 deletions(-) create mode 100644 tests/extension.spec.ts-snapshots/blob-preview-with-a-step-file-1-chromium-linux.png diff --git a/src/chrome/content.ts b/src/chrome/content.ts index 45ebfd9..423f089 100644 --- a/src/chrome/content.ts +++ b/src/chrome/content.ts @@ -44,20 +44,10 @@ async function injectBlob( filename: string, document: Document ) { - let classicUi = false - // React UI (as of 2023-06-23, for signed-in users only) const childWithProperClass = document.querySelector( '.react-blob-view-header-sticky' ) let element = childWithProperClass?.parentElement - if (!element) { - // Classic UI - const childWithProperClass = - document.querySelector('.js-blob-header') - element = childWithProperClass?.parentElement - classicUi = !!element - } - if (!element) { throw Error("Couldn't find blob html element to inject") } @@ -70,7 +60,6 @@ async function injectBlob( repo, sha, filename, - classicUi, colorMode, }) root.render(cadBlobPage) diff --git a/src/components/viewer/CadBlobPage.tsx b/src/components/viewer/CadBlobPage.tsx index 31ffa27..ab6ccb7 100644 --- a/src/components/viewer/CadBlobPage.tsx +++ b/src/components/viewer/CadBlobPage.tsx @@ -13,14 +13,12 @@ function CadBlobPortal({ repo, sha, filename, - classicUi, }: { element: HTMLElement owner: string repo: string sha: string filename: string - classicUi: boolean }): React.ReactElement { const [richBlob, setRichBlob] = useState() const [richSelected, setRichSelected] = useState(true) @@ -29,23 +27,14 @@ function CadBlobPortal({ const [sourceElements, setSourceElements] = useState([]) useEffect(() => { - let existingToggle: HTMLElement | undefined | null - let toolbar: HTMLElement | undefined | null - let blob: HTMLElement | undefined | null - if (classicUi) { - // no existing toggle - toolbar = element.querySelector('.js-blob-header') - blob = element.querySelector('.blob-wrapper') - } else { - existingToggle = element.querySelector( - 'ul[class*=SegmentedControl]' + const existingToggle = element.querySelector( + 'ul[class*=SegmentedControl]' + ) + const toolbar = existingToggle?.parentElement + let blob: HTMLElement | undefined | null = + element.querySelector( + 'section[aria-labelledby*=file-name-id]' ) - toolbar = existingToggle?.parentElement - blob = element.querySelector( - 'section[aria-labelledby="file-name-id"]' - ) - } - const isPreviewAlreadyEnabled = existingToggle && existingToggle.childElementCount > 2 // Preview, Code, Blame if (isPreviewAlreadyEnabled) { @@ -93,7 +82,7 @@ function CadBlobPortal({ {toolbarContainer && createPortal( { if (index < 2) { @@ -114,11 +103,7 @@ function CadBlobPortal({ Code - {!classicUi && ( - - Blame - - )} + Blame , toolbarContainer )} @@ -148,7 +133,6 @@ export type CadBlobPageProps = { repo: string sha: string filename: string - classicUi: boolean colorMode: ColorModeWithAuto } @@ -158,7 +142,6 @@ export function CadBlobPage({ repo, sha, filename, - classicUi, colorMode, }: CadBlobPageProps): React.ReactElement { return ( @@ -169,7 +152,6 @@ export function CadBlobPage({ repo={repo} sha={sha} filename={filename} - classicUi={classicUi} /> ) diff --git a/src/components/viewer/CadDiff.tsx b/src/components/viewer/CadDiff.tsx index 1b01cf2..13cac0a 100644 --- a/src/components/viewer/CadDiff.tsx +++ b/src/components/viewer/CadDiff.tsx @@ -1,11 +1,6 @@ import React, { useEffect, useState } from 'react' import '@react-three/fiber' -import { - Box, - useTheme, - TabNav, - Octicon, -} from '@primer/react' +import { Box, useTheme, TabNav, Octicon } from '@primer/react' import { FileDiff } from '../../chrome/types' import { Viewer3D } from './Viewer3D' import { BufferGeometry, Sphere } from 'three' diff --git a/tests/extension.spec.ts b/tests/extension.spec.ts index b1bf92c..189999a 100644 --- a/tests/extension.spec.ts +++ b/tests/extension.spec.ts @@ -124,17 +124,28 @@ test('commit diff with an added .step file', async ({ // expect(screenshot2).toMatchSnapshot() // }) -// TODO: re-enable when new blob page is fixed -// test('blob preview with an .obj file', async ({ -// page, -// authorizedBackground, -// }) => { -// const url = -// 'https://github.com/KittyCAD/diff-samples/blob/fd9eec79f0464833686ea6b5b34ea07145e32734/models/box.obj' -// const element = await getBlobPreviewElement(page, url) -// const screenshot = await element.screenshot() -// expect(screenshot).toMatchSnapshot() -// }) +test('blob preview with an .obj file', async ({ + page, + authorizedBackground, +}) => { + const url = + 'https://github.com/KittyCAD/diff-samples/blob/fd9eec79f0464833686ea6b5b34ea07145e32734/models/box.obj' + const element = await getBlobPreviewElement(page, url) + const screenshot = await element.screenshot() + expect(screenshot).toMatchSnapshot() +}) + + +test('blob preview with a .step file', async ({ + page, + authorizedBackground, +}) => { + const url = + 'https://github.com/KittyCAD/diff-samples/blob/fd9eec79f0464833686ea6b5b34ea07145e32734/models/box.step' + const element = await getBlobPreviewElement(page, url) + const screenshot = await element.screenshot() + expect(screenshot).toMatchSnapshot() +}) test('blob preview with an .stl file', async ({ page, diff --git a/tests/extension.spec.ts-snapshots/blob-preview-with-a-step-file-1-chromium-linux.png b/tests/extension.spec.ts-snapshots/blob-preview-with-a-step-file-1-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..55c9f5f6c43e27df81795635df90836e7fd608f5 GIT binary patch literal 23247 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 literal 0 HcmV?d00001 diff --git a/tests/extension.spec.ts-snapshots/blob-preview-with-an-obj-file-1-chromium-linux.png b/tests/extension.spec.ts-snapshots/blob-preview-with-an-obj-file-1-chromium-linux.png index 179d805da7aed7a08d52a374aae166ec6a94c894..bc0b0c72756fdd5f3d1dff954aa020b37618e01c 100644 GIT binary patch literal 133425 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