blob: c763123dde7935af1200a3c33a9defbb29fd1fc5 [file] [edit]
/**
* @license
* Copyright (C) 2026 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import './gr-image-diff-tool';
import {ImageDiffTool} from './gr-image-diff-tool';
import {fixture, html, assert} from '@open-wc/testing';
import sinon from 'sinon';
suite('gr-image-diff-tool tests', () => {
let element: ImageDiffTool;
let sandbox: sinon.SinonSandbox;
setup(async () => {
sandbox = sinon.createSandbox();
(window as any).resemble = {
outputSettings: sandbox.stub(),
compareTo: sandbox.stub().returnsThis(),
onComplete: sandbox.stub(),
};
const resembleStub: any = sandbox.stub().returns((window as any).resemble);
resembleStub.outputSettings = (window as any).resemble.outputSettings;
(window as any).resemble = resembleStub;
element = await fixture<ImageDiffTool>(
html`<gr-image-diff-tool></gr-image-diff-tool>`
);
await element.updateComplete;
});
teardown(() => {
sandbox.restore();
});
test('test opacity mode', async () => {
(element as any).observeMode = 'opacity';
await element.updateComplete;
await element.updateComplete;
assert.isTrue((element as any).showOpacityMode);
assert.isFalse((element as any).showResembleMode);
assert.isOk(element.shadowRoot!.querySelector('gr-opacity-diff-mode'));
assert.isNull(element.shadowRoot!.querySelector('gr-resemble-diff-mode'));
});
test('test resemble mode', async () => {
(element as any).observeMode = 'resemble';
await element.updateComplete;
await element.updateComplete;
assert.isTrue((element as any).showResembleMode);
assert.isFalse((element as any).showOpacityMode);
assert.isOk(element.shadowRoot!.querySelector('gr-resemble-diff-mode'));
assert.isNull(element.shadowRoot!.querySelector('gr-opacity-diff-mode'));
});
test('localStorage persists', async () => {
sandbox.stub(element as any, 'setMode');
sandbox.stub(element as any, 'getMode');
element.connectedCallback();
assert.equal((element as any).getMode.callCount, 1);
assert.equal((element as any).setMode.callCount, 1);
(element as any).observeMode = 'opacity';
await element.updateComplete;
await element.updateComplete;
assert.equal((element as any).setMode.callCount, 2);
(element as any).observeMode = 'resemble';
await element.updateComplete;
await element.updateComplete;
assert.equal((element as any).setMode.callCount, 3);
});
});