Files
memind/mindspace-long-image.test.mjs
T

40 lines
1.6 KiB
JavaScript
Raw Normal View History

2026-07-27 21:21:54 +08:00
import assert from 'node:assert/strict';
import test from 'node:test';
import {
hideLongImageExportChrome,
2026-07-27 21:21:54 +08:00
isLongImageDownloadRequest,
LONG_IMAGE_EXPORT_SELECTORS,
2026-07-27 21:21:54 +08:00
LONG_IMAGE_EXPORT_STYLE,
} from './mindspace-long-image.mjs';
test('recognizes supported long-image download query values', () => {
assert.equal(isLongImageDownloadRequest({ download: 'long-image' }), true);
assert.equal(isLongImageDownloadRequest({ export: 'png' }), true);
assert.equal(isLongImageDownloadRequest({ download: 'document' }), false);
});
test('long-image capture style hides platform page actions', () => {
assert.match(LONG_IMAGE_EXPORT_STYLE, /\[data-mindspace-public-share\]/);
assert.match(LONG_IMAGE_EXPORT_STYLE, /\[data-mindspace-public-share-dialog\]/);
2026-07-27 21:21:54 +08:00
assert.match(LONG_IMAGE_EXPORT_STYLE, /\.publication-share-fab/);
assert.match(LONG_IMAGE_EXPORT_STYLE, /\.publication-share-sheet/);
assert.match(LONG_IMAGE_EXPORT_STYLE, /display:\s*none\s*!important/);
assert.ok(LONG_IMAGE_EXPORT_SELECTORS.includes('[data-mindspace-public-share]'));
});
test('long-image capture actively hides injected platform chrome before screenshot', async () => {
const calls = [];
const page = {
async addStyleTag(options) {
calls.push(['style', options.content]);
},
async evaluate(_fn, selectors) {
calls.push(['evaluate', selectors]);
},
};
await hideLongImageExportChrome(page);
assert.deepEqual(calls[0][0], 'style');
assert.match(calls[0][1], /\[data-mindspace-public-share\]/);
assert.deepEqual(calls[1], ['evaluate', LONG_IMAGE_EXPORT_SELECTORS]);
2026-07-27 21:21:54 +08:00
});