| /** | |
| * @license | |
| * Copyright 2026 Google LLC | |
| * SPDX-License-Identifier: Apache-2.0 | |
| */ | |
| import '../../../test/common-test-setup'; | |
| import './gr-diff-host'; | |
| import {GrDiffHost} from './gr-diff-host'; | |
| import {fixture, html} from '@open-wc/testing'; | |
| // Until https://github.com/modernweb-dev/web/issues/2804 is fixed | |
| // @ts-expect-error | |
| import {visualDiff} from '@web/test-runner-visual-regression'; | |
| import {stubRestApi, visualDiffDarkTheme} from '../../../test/test-utils'; | |
| import {createDefaultDiffPrefs} from '../../../constants/constants'; | |
| import { | |
| createChange, | |
| createPatchRange, | |
| } from '../../../test/test-data-generators'; | |
| import {EDIT} from '../../../types/common'; | |
| import {DiffInfo, DiffViewMode} from '../../../api/diff'; | |
| suite('gr-diff-host screenshot tests', () => { | |
| let element: GrDiffHost; | |
| setup(async () => { | |
| const diff: DiffInfo = { | |
| meta_a: { | |
| name: 'sample.ts', | |
| content_type: 'application/typescript', | |
| lines: 10, | |
| }, | |
| meta_b: { | |
| name: 'sample.ts', | |
| content_type: 'application/typescript', | |
| lines: 10, | |
| }, | |
| change_type: 'MODIFIED', | |
| intraline_status: 'OK', | |
| content: [ | |
| { | |
| ab: [ | |
| '// Copyright 2026 Google LLC', | |
| 'import {LitElement, html} from "lit";', | |
| '', | |
| ], | |
| }, | |
| { | |
| a: [ | |
| 'export function calculateSum(a: number, b: number): number {', | |
| ' return a + b;', | |
| '}', | |
| ], | |
| b: [ | |
| 'export function calculateSum(x: number, y: number): number {', | |
| ' // Updated implementation', | |
| ' return x + y;', | |
| '}', | |
| ], | |
| }, | |
| { | |
| ab: [ | |
| '', | |
| 'export function helper(): void {', | |
| ' console.log("ready");', | |
| ], | |
| }, | |
| { | |
| a: [' console.log("old debug line");'], | |
| }, | |
| { | |
| ab: ['}'], | |
| }, | |
| { | |
| b: ['', '// Added at end of file', 'export const VERSION = 2;'], | |
| }, | |
| ], | |
| }; | |
| stubRestApi('getDiff').resolves(diff); | |
| element = await fixture<GrDiffHost>(html`<gr-diff-host | |
| .changeNum=${42} | |
| .path=${'sample.ts'} | |
| .change=${createChange()} | |
| .patchRange=${{ | |
| ...createPatchRange(), | |
| patchNum: EDIT, | |
| }} | |
| .prefs=${createDefaultDiffPrefs()} | |
| ></gr-diff-host>`); | |
| await element.reload(true); | |
| await element.updateComplete; | |
| }); | |
| test('edit mode diff with revert buttons', async () => { | |
| await visualDiff(element, 'gr-diff-host-edit-mode-revert'); | |
| await visualDiffDarkTheme(element, 'gr-diff-host-edit-mode-revert'); | |
| }); | |
| test('unified edit mode diff with revert buttons', async () => { | |
| element.viewMode = DiffViewMode.UNIFIED; | |
| await element.updateComplete; | |
| await visualDiff(element, 'gr-diff-host-edit-mode-revert-unified'); | |
| await visualDiffDarkTheme(element, 'gr-diff-host-edit-mode-revert-unified'); | |
| }); | |
| }); |