@omicronenergy/oscd-shell 0.0.5 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/foundation/cyrb64.d.ts +6 -0
- package/dist/foundation/cyrb64.js +26 -0
- package/dist/foundation/cyrb64.js.map +1 -0
- package/dist/foundation.d.ts +1 -0
- package/dist/foundation.js +2 -0
- package/dist/foundation.js.map +1 -0
- package/dist/locales/de.d.ts +10 -0
- package/dist/locales/de.js +15 -0
- package/dist/locales/de.js.map +1 -0
- package/dist/locales.d.ts +13 -0
- package/dist/locales.js +21 -0
- package/dist/locales.js.map +1 -0
- package/dist/oscd-shell.d.ts +119 -0
- package/dist/oscd-shell.js +685 -0
- package/dist/oscd-shell.js.map +1 -0
- package/dist/utils/plugin-utils.d.ts +29 -0
- package/dist/utils/plugin-utils.js +138 -0
- package/dist/utils/plugin-utils.js.map +1 -0
- package/dist/utils/plugin-utils.spec.d.ts +1 -0
- package/dist/utils/plugin-utils.spec.js +115 -0
- package/dist/utils/plugin-utils.spec.js.map +1 -0
- package/package.json +40 -35
- package/.editorconfig +0 -22
- package/.github/actions/setup-node-env/action.yml +0 -49
- package/.github/workflows/release-please.yml +0 -84
- package/.github/workflows/test.yml +0 -18
- package/.github/workflows/update-screenshots.yml +0 -29
- package/.husky/commit-msg +0 -1
- package/.husky/pre-commit +0 -1
- package/.release-please-manifest.json +0 -1
- package/CHANGELOG.md +0 -73
- package/CONTRIBUTING.md +0 -393
- package/commitlint.config.js +0 -1
- package/demo/AddPlugins.js +0 -42
- package/demo/DemoPluginSrc.js +0 -9
- package/demo/embedded.html +0 -17
- package/demo/index.html +0 -95
- package/foundation/cyrb64.ts +0 -27
- package/foundation/edit-event.ts +0 -273
- package/foundation/open-event.ts +0 -21
- package/foundation.ts +0 -28
- package/lit-localize.json +0 -15
- package/localization/de.xlf +0 -75
- package/oscd-shell.editing.spec.ts +0 -813
- package/oscd-shell.plugging.spec.ts +0 -78
- package/oscd-shell.spec.ts +0 -431
- package/oscd-shell.test.ts +0 -382
- package/oscd-shell.ts +0 -906
- package/release-please-config.json +0 -21
- package/rollup.config.js +0 -51
- package/screenshots/Chromium/baseline/app-bar-de.png +0 -0
- package/screenshots/Chromium/baseline/app-bar-en.png +0 -0
- package/screenshots/Chromium/baseline/document-name-de.png +0 -0
- package/screenshots/Chromium/baseline/document-name-en.png +0 -0
- package/screenshots/Chromium/baseline/editor-plugins-de.png +0 -0
- package/screenshots/Chromium/baseline/editor-plugins-en.png +0 -0
- package/screenshots/Chromium/baseline/editor-plugins-selected-de.png +0 -0
- package/screenshots/Chromium/baseline/editor-plugins-selected-en.png +0 -0
- package/screenshots/Chromium/baseline/editor-plugins-with-doc-de.png +0 -0
- package/screenshots/Chromium/baseline/editor-plugins-with-doc-en.png +0 -0
- package/screenshots/Chromium/baseline/log-entries-de.png +0 -0
- package/screenshots/Chromium/baseline/log-entries-en.png +0 -0
- package/screenshots/Chromium/baseline/log-entries-redone-de.png +0 -0
- package/screenshots/Chromium/baseline/log-entries-redone-en.png +0 -0
- package/screenshots/Chromium/baseline/log-entries-undone-de.png +0 -0
- package/screenshots/Chromium/baseline/log-entries-undone-en.png +0 -0
- package/screenshots/Chromium/baseline/log-screen-de.png +0 -0
- package/screenshots/Chromium/baseline/log-screen-en.png +0 -0
- package/screenshots/Chromium/baseline/menu-drawer-de.png +0 -0
- package/screenshots/Chromium/baseline/menu-drawer-en.png +0 -0
- package/screenshots/Chromium/baseline/menu-plugins-de.png +0 -0
- package/screenshots/Chromium/baseline/menu-plugins-en.png +0 -0
- package/screenshots/Chromium/baseline/menu-plugins-triggered-de.png +0 -0
- package/screenshots/Chromium/baseline/menu-plugins-triggered-en.png +0 -0
- package/screenshots/Firefox/baseline/app-bar-de.png +0 -0
- package/screenshots/Firefox/baseline/app-bar-en.png +0 -0
- package/screenshots/Firefox/baseline/document-name-de.png +0 -0
- package/screenshots/Firefox/baseline/document-name-en.png +0 -0
- package/screenshots/Firefox/baseline/editor-plugins-de.png +0 -0
- package/screenshots/Firefox/baseline/editor-plugins-en.png +0 -0
- package/screenshots/Firefox/baseline/editor-plugins-selected-de.png +0 -0
- package/screenshots/Firefox/baseline/editor-plugins-selected-en.png +0 -0
- package/screenshots/Firefox/baseline/editor-plugins-with-doc-de.png +0 -0
- package/screenshots/Firefox/baseline/editor-plugins-with-doc-en.png +0 -0
- package/screenshots/Firefox/baseline/log-entries-de.png +0 -0
- package/screenshots/Firefox/baseline/log-entries-en.png +0 -0
- package/screenshots/Firefox/baseline/log-entries-redone-de.png +0 -0
- package/screenshots/Firefox/baseline/log-entries-redone-en.png +0 -0
- package/screenshots/Firefox/baseline/log-entries-undone-de.png +0 -0
- package/screenshots/Firefox/baseline/log-entries-undone-en.png +0 -0
- package/screenshots/Firefox/baseline/log-screen-de.png +0 -0
- package/screenshots/Firefox/baseline/log-screen-en.png +0 -0
- package/screenshots/Firefox/baseline/menu-drawer-de.png +0 -0
- package/screenshots/Firefox/baseline/menu-drawer-en.png +0 -0
- package/screenshots/Firefox/baseline/menu-plugins-de.png +0 -0
- package/screenshots/Firefox/baseline/menu-plugins-en.png +0 -0
- package/screenshots/Firefox/baseline/menu-plugins-triggered-de.png +0 -0
- package/screenshots/Firefox/baseline/menu-plugins-triggered-en.png +0 -0
- package/screenshots/Webkit/baseline/app-bar-de.png +0 -0
- package/screenshots/Webkit/baseline/app-bar-en.png +0 -0
- package/screenshots/Webkit/baseline/document-name-de.png +0 -0
- package/screenshots/Webkit/baseline/document-name-en.png +0 -0
- package/screenshots/Webkit/baseline/editor-plugins-de.png +0 -0
- package/screenshots/Webkit/baseline/editor-plugins-en.png +0 -0
- package/screenshots/Webkit/baseline/editor-plugins-selected-de.png +0 -0
- package/screenshots/Webkit/baseline/editor-plugins-selected-en.png +0 -0
- package/screenshots/Webkit/baseline/editor-plugins-with-doc-de.png +0 -0
- package/screenshots/Webkit/baseline/editor-plugins-with-doc-en.png +0 -0
- package/screenshots/Webkit/baseline/log-entries-de.png +0 -0
- package/screenshots/Webkit/baseline/log-entries-en.png +0 -0
- package/screenshots/Webkit/baseline/log-entries-redone-de.png +0 -0
- package/screenshots/Webkit/baseline/log-entries-redone-en.png +0 -0
- package/screenshots/Webkit/baseline/log-entries-undone-de.png +0 -0
- package/screenshots/Webkit/baseline/log-entries-undone-en.png +0 -0
- package/screenshots/Webkit/baseline/log-screen-de.png +0 -0
- package/screenshots/Webkit/baseline/log-screen-en.png +0 -0
- package/screenshots/Webkit/baseline/menu-drawer-de.png +0 -0
- package/screenshots/Webkit/baseline/menu-drawer-en.png +0 -0
- package/screenshots/Webkit/baseline/menu-plugins-de.png +0 -0
- package/screenshots/Webkit/baseline/menu-plugins-en.png +0 -0
- package/screenshots/Webkit/baseline/menu-plugins-triggered-de.png +0 -0
- package/screenshots/Webkit/baseline/menu-plugins-triggered-en.png +0 -0
- package/tsconfig.json +0 -23
- package/utils/testing.spec.ts +0 -210
- package/utils/testing.ts +0 -65
- package/web-dev-server.config.js +0 -24
- package/web-test-runner.config.js +0 -180
package/oscd-shell.test.ts
DELETED
|
@@ -1,382 +0,0 @@
|
|
|
1
|
-
import { expect, waitUntil } from '@open-wc/testing';
|
|
2
|
-
import { visualDiff } from '@web/test-runner-visual-regression';
|
|
3
|
-
|
|
4
|
-
import './oscd-shell.js';
|
|
5
|
-
|
|
6
|
-
import { OscdAppBar } from '@omicronenergy/oscd-ui/app-bar/OscdAppBar.js';
|
|
7
|
-
import type { OscdFilledIconButton } from '@omicronenergy/oscd-ui/iconbutton/oscd-filled-icon-button.js';
|
|
8
|
-
import type { OscdListItem } from '@omicronenergy/oscd-ui/list/oscd-list-item.js';
|
|
9
|
-
import { OscdSecondaryTab } from '@omicronenergy/oscd-ui/tabs/OscdSecondaryTab.js';
|
|
10
|
-
|
|
11
|
-
import { Edit, newEditEvent, newOpenEvent } from './foundation.js';
|
|
12
|
-
import {
|
|
13
|
-
findButtonByIcon,
|
|
14
|
-
simulateKeypressOnElement,
|
|
15
|
-
} from './utils/testing.js';
|
|
16
|
-
import { allLocales } from './locales.js';
|
|
17
|
-
import type { OpenSCD } from './oscd-shell.js';
|
|
18
|
-
|
|
19
|
-
const factor = window.process && process.env.CI ? 4 : 2;
|
|
20
|
-
|
|
21
|
-
function timeout(ms: number) {
|
|
22
|
-
return new Promise(res => {
|
|
23
|
-
setTimeout(res, ms * factor);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
function isMenuFullyOpen(editor: OpenSCD) {
|
|
28
|
-
const rect = editor.menuUI?.shadowRoot
|
|
29
|
-
?.querySelector('.md3-navigation-drawer-modal--opened')
|
|
30
|
-
?.getBoundingClientRect();
|
|
31
|
-
return rect && rect.width <= 360;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
mocha.timeout(2000 * factor);
|
|
35
|
-
|
|
36
|
-
const doc = new DOMParser().parseFromString(
|
|
37
|
-
`<testdoc></testdoc>`,
|
|
38
|
-
'application/xml',
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
let editor: OpenSCD;
|
|
42
|
-
let appBar!: OscdAppBar;
|
|
43
|
-
let menuButton!: OscdFilledIconButton;
|
|
44
|
-
|
|
45
|
-
async function openMenuDrawer() {
|
|
46
|
-
if (!appBar || !menuButton) {
|
|
47
|
-
throw new Error('App bar or menu button not found');
|
|
48
|
-
}
|
|
49
|
-
menuButton.click();
|
|
50
|
-
await editor.menuUI?.updateComplete;
|
|
51
|
-
await waitUntil(() => isMenuFullyOpen(editor), 'menu did not appear', {
|
|
52
|
-
timeout: 2000,
|
|
53
|
-
});
|
|
54
|
-
await timeout(200);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
async function editorTabCount(count: number) {
|
|
58
|
-
if (!editor.shadowRoot) {
|
|
59
|
-
throw new Error('Editor shadow root not found');
|
|
60
|
-
}
|
|
61
|
-
await waitUntil(
|
|
62
|
-
() =>
|
|
63
|
-
editor.shadowRoot!.querySelectorAll('oscd-secondary-tab').length >= count,
|
|
64
|
-
`waiting for ${count} editor tabs timmed out`,
|
|
65
|
-
);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
async function menuPluginCount(count: number) {
|
|
69
|
-
if (!editor.shadowRoot) {
|
|
70
|
-
throw new Error('Editor shadow root not found');
|
|
71
|
-
}
|
|
72
|
-
await waitUntil(() => {
|
|
73
|
-
const allElements = editor.shadowRoot!.querySelectorAll('aside > *');
|
|
74
|
-
const menuPlugins = Array.from(allElements).filter(el =>
|
|
75
|
-
el.tagName.toLowerCase().startsWith('oscd-'),
|
|
76
|
-
);
|
|
77
|
-
return menuPlugins.length >= count;
|
|
78
|
-
}, `waiting for ${count} menu plugins timmed out`);
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
beforeEach(async () => {
|
|
82
|
-
editor = document.createElement('oscd-shell');
|
|
83
|
-
document.body.prepend(editor);
|
|
84
|
-
await editor.updateComplete;
|
|
85
|
-
appBar = editor.shadowRoot?.querySelector('oscd-app-bar') as OscdAppBar;
|
|
86
|
-
menuButton =
|
|
87
|
-
appBar &&
|
|
88
|
-
(findButtonByIcon(
|
|
89
|
-
appBar,
|
|
90
|
-
'oscd-filled-icon-button',
|
|
91
|
-
'menu',
|
|
92
|
-
) as OscdFilledIconButton);
|
|
93
|
-
if (!appBar) {
|
|
94
|
-
throw new Error('App bar not found');
|
|
95
|
-
}
|
|
96
|
-
if (!menuButton) {
|
|
97
|
-
throw new Error('Menu button not found');
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
afterEach(() => {
|
|
102
|
-
editor.remove();
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
it(`changes locales on attribute change`, async () => {
|
|
106
|
-
editor.setAttribute('locale', 'invalid');
|
|
107
|
-
await editor.updateComplete;
|
|
108
|
-
|
|
109
|
-
expect(editor).to.have.property('locale', 'en');
|
|
110
|
-
|
|
111
|
-
editor.setAttribute('locale', 'de');
|
|
112
|
-
await editor.updateComplete;
|
|
113
|
-
|
|
114
|
-
await timeout(180);
|
|
115
|
-
await editor.updateComplete;
|
|
116
|
-
expect(editor).to.have.property('locale', 'de');
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
allLocales.forEach(lang =>
|
|
120
|
-
describe(`translated to ${lang}`, () => {
|
|
121
|
-
beforeEach(async () => {
|
|
122
|
-
editor.setAttribute('locale', lang);
|
|
123
|
-
await editor.updateComplete;
|
|
124
|
-
await waitUntil(
|
|
125
|
-
() => editor.locale === lang,
|
|
126
|
-
`setting locale to ${lang} failed`,
|
|
127
|
-
);
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
it(`displays a top app bar`, async () => {
|
|
131
|
-
await editor.updateComplete;
|
|
132
|
-
await timeout(20);
|
|
133
|
-
await visualDiff(editor, `app-bar-${lang}`);
|
|
134
|
-
});
|
|
135
|
-
|
|
136
|
-
it(`displays a menu on button click`, async () => {
|
|
137
|
-
await editor.updateComplete;
|
|
138
|
-
await openMenuDrawer();
|
|
139
|
-
await visualDiff(editor, `menu-drawer-${lang}`);
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it(`displays a current document title`, async () => {
|
|
143
|
-
await editor.updateComplete;
|
|
144
|
-
|
|
145
|
-
editor.dispatchEvent(newOpenEvent(doc, 'test.scd'));
|
|
146
|
-
await editor.updateComplete;
|
|
147
|
-
await timeout(20);
|
|
148
|
-
await visualDiff(editor, `document-name-${lang}`);
|
|
149
|
-
});
|
|
150
|
-
|
|
151
|
-
it(`shows a log screen`, async () => {
|
|
152
|
-
await editor.updateComplete;
|
|
153
|
-
await openMenuDrawer();
|
|
154
|
-
editor.menuUI
|
|
155
|
-
?.querySelector<OscdListItem>('oscd-list-item:last-child')
|
|
156
|
-
?.click();
|
|
157
|
-
|
|
158
|
-
await editor.updateComplete;
|
|
159
|
-
await timeout(300);
|
|
160
|
-
await visualDiff(editor, `log-screen-${lang}`);
|
|
161
|
-
});
|
|
162
|
-
|
|
163
|
-
it(`shows log entries`, async () => {
|
|
164
|
-
const parent = doc.documentElement;
|
|
165
|
-
const node = doc.createElement('test');
|
|
166
|
-
const reference = doc.querySelector('testchild');
|
|
167
|
-
editor.dispatchEvent(newEditEvent({ parent, node, reference }));
|
|
168
|
-
editor.dispatchEvent(newEditEvent({ parent, node, reference: null }));
|
|
169
|
-
|
|
170
|
-
const element = doc.querySelector('testdoc')!;
|
|
171
|
-
editor.dispatchEvent(
|
|
172
|
-
newEditEvent({
|
|
173
|
-
element,
|
|
174
|
-
attributes: {
|
|
175
|
-
name: 'A2',
|
|
176
|
-
desc: null,
|
|
177
|
-
'myns:attr': {
|
|
178
|
-
value: 'namespaced value',
|
|
179
|
-
namespaceURI: 'http://example.org/myns',
|
|
180
|
-
},
|
|
181
|
-
},
|
|
182
|
-
}),
|
|
183
|
-
);
|
|
184
|
-
|
|
185
|
-
editor.dispatchEvent(newEditEvent({ node }));
|
|
186
|
-
editor.dispatchEvent(
|
|
187
|
-
newEditEvent([
|
|
188
|
-
{ parent, node, reference },
|
|
189
|
-
{ parent, node, reference: null },
|
|
190
|
-
{ invalid: 'edit' } as unknown as Edit,
|
|
191
|
-
]),
|
|
192
|
-
);
|
|
193
|
-
|
|
194
|
-
const undoButton = findButtonByIcon(
|
|
195
|
-
appBar,
|
|
196
|
-
'oscd-filled-icon-button',
|
|
197
|
-
'undo',
|
|
198
|
-
);
|
|
199
|
-
const redoButton = findButtonByIcon(
|
|
200
|
-
appBar,
|
|
201
|
-
'oscd-filled-icon-button',
|
|
202
|
-
'redo',
|
|
203
|
-
);
|
|
204
|
-
const historyButton = findButtonByIcon(
|
|
205
|
-
appBar,
|
|
206
|
-
'oscd-filled-icon-button',
|
|
207
|
-
'history',
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
expect(undoButton).to.exist;
|
|
211
|
-
expect(redoButton).to.exist;
|
|
212
|
-
expect(historyButton).to.exist;
|
|
213
|
-
|
|
214
|
-
historyButton!.click();
|
|
215
|
-
|
|
216
|
-
await editor.updateComplete;
|
|
217
|
-
await timeout(300);
|
|
218
|
-
await visualDiff(editor, `log-entries-${lang}`);
|
|
219
|
-
|
|
220
|
-
undoButton!.click();
|
|
221
|
-
await editor.updateComplete;
|
|
222
|
-
|
|
223
|
-
undoButton!.click();
|
|
224
|
-
await editor.updateComplete;
|
|
225
|
-
|
|
226
|
-
undoButton!.click();
|
|
227
|
-
await editor.updateComplete;
|
|
228
|
-
|
|
229
|
-
undoButton!.click();
|
|
230
|
-
await editor.updateComplete;
|
|
231
|
-
|
|
232
|
-
simulateKeypressOnElement('z', true);
|
|
233
|
-
|
|
234
|
-
simulateKeypressOnElement('y', false);
|
|
235
|
-
|
|
236
|
-
simulateKeypressOnElement('X', true);
|
|
237
|
-
|
|
238
|
-
await editor.updateComplete;
|
|
239
|
-
|
|
240
|
-
await timeout(20);
|
|
241
|
-
await visualDiff(editor, `log-entries-undone-${lang}`);
|
|
242
|
-
|
|
243
|
-
redoButton!.click();
|
|
244
|
-
await editor.updateComplete;
|
|
245
|
-
|
|
246
|
-
redoButton!.click();
|
|
247
|
-
await editor.updateComplete;
|
|
248
|
-
|
|
249
|
-
await timeout(20);
|
|
250
|
-
await visualDiff(editor, `log-entries-redone-${lang}`);
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
describe('with menu plugins loaded', () => {
|
|
254
|
-
beforeEach(async () => {
|
|
255
|
-
editor.plugins = {
|
|
256
|
-
editor: [],
|
|
257
|
-
menu: [
|
|
258
|
-
{
|
|
259
|
-
name: 'Test Menu Plugin',
|
|
260
|
-
translations: { de: 'Test Menü Erweiterung' },
|
|
261
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20TestPlugin%20extends%20HTMLElement%20%7B%0D%0A%20%20async%20run%28%29%20%7B%0D%0A%20%20%20%20return%20false%3B%0D%0A%20%20%7D%0D%0A%7D',
|
|
262
|
-
icon: 'android',
|
|
263
|
-
active: true,
|
|
264
|
-
requireDoc: true,
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
name: 'Test Menu Plugin 2',
|
|
268
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20TestPlugin%20extends%20HTMLElement%20%7B%0D%0A%20%20async%20run%28%29%20%7B%0D%0A%20%20%20%20this.dispatchEvent%28new%20CustomEvent%28%27oscd-open%27%2C%20%7Bdetail%3A%20%7BdocName%3A%20%27testDoc.scd%27%2C%20doc%3A%20window.document%7D%2C%20bubbles%3A%20true%2C%20composed%3A%20true%7D%29%29%3B%0D%0A%20%20%7D%0D%0A%7D',
|
|
269
|
-
icon: 'polymer',
|
|
270
|
-
active: true,
|
|
271
|
-
requireDoc: false,
|
|
272
|
-
},
|
|
273
|
-
{
|
|
274
|
-
name: 'Test Menu Plugin 3',
|
|
275
|
-
translations: { de: 'Test Menü Erweiterung 3' },
|
|
276
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20BrokenTestPlugin%20extends%20HTMLElement%20%7B%0D%0A%20%20%2F%2F%20oh%20NO%21%20There%27s%20no%20run%20method%21%0D%0A%7D',
|
|
277
|
-
icon: 'dry',
|
|
278
|
-
active: true,
|
|
279
|
-
requireDoc: false,
|
|
280
|
-
},
|
|
281
|
-
{
|
|
282
|
-
name: 'Test Menu Plugin 4',
|
|
283
|
-
translations: { de: 'Test Menü Erweiterung 4' },
|
|
284
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20BrokenTestPlugin%20extends%20HTMLElement%20%7B%0D%0A%20%20%2F%2F%20oh%20no%21%20There%27s%20no%20run%20method%21%0D%0A%7D',
|
|
285
|
-
icon: 'translate',
|
|
286
|
-
active: false,
|
|
287
|
-
requireDoc: true,
|
|
288
|
-
},
|
|
289
|
-
],
|
|
290
|
-
};
|
|
291
|
-
await editor.updateComplete;
|
|
292
|
-
await menuPluginCount(4);
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
it('displays menu plugins in the menu', async () => {
|
|
296
|
-
await openMenuDrawer();
|
|
297
|
-
await visualDiff(editor, `menu-plugins-${lang}`);
|
|
298
|
-
});
|
|
299
|
-
|
|
300
|
-
it('triggers menu plugins on menu entry click', async () => {
|
|
301
|
-
await openMenuDrawer();
|
|
302
|
-
editor.menuUI
|
|
303
|
-
?.querySelector<OscdFilledIconButton>('oscd-list-item:nth-of-type(2)')
|
|
304
|
-
?.click();
|
|
305
|
-
editor.menuUI
|
|
306
|
-
?.querySelector<OscdFilledIconButton>('oscd-list-item:nth-of-type(3)')
|
|
307
|
-
?.click();
|
|
308
|
-
|
|
309
|
-
await editor.updateComplete;
|
|
310
|
-
await timeout(200);
|
|
311
|
-
expect(editor.docName).to.equal('testDoc.scd');
|
|
312
|
-
await editor.updateComplete;
|
|
313
|
-
await visualDiff(editor, `menu-plugins-triggered-${lang}`);
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
describe('with editor plugins loaded', () => {
|
|
318
|
-
beforeEach(async () => {
|
|
319
|
-
editor.plugins = {
|
|
320
|
-
menu: [],
|
|
321
|
-
editor: [
|
|
322
|
-
{
|
|
323
|
-
name: 'Test Editor Plugin',
|
|
324
|
-
translations: { de: 'Test Editor Erweiterung' },
|
|
325
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20TestEditorPlugin%20extends%20HTMLElement%20%7B%0D%0A%20%20constructor%20%28%29%20%7B%20super%28%29%3B%20this.innerHTML%20%3D%20%60%3Cp%3ETest%20Editor%20Plugin%3C%2Fp%3E%60%3B%20%7D%0D%0A%7D',
|
|
326
|
-
icon: 'edit',
|
|
327
|
-
active: true,
|
|
328
|
-
requireDoc: true,
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
name: 'Test Editor Plugin 2',
|
|
332
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20TestEditorPlugin2%20extends%20HTMLElement%20%7B%0D%0A%20%20constructor%20%28%29%20%7B%20super%28%29%3B%20this.innerHTML%20%3D%20%60%3Cp%3ETest%20Editor%20Plugin%202%3C%2Fp%3E%60%3B%20%7D%0D%0A%7D',
|
|
333
|
-
icon: 'android',
|
|
334
|
-
active: true,
|
|
335
|
-
requireDoc: false,
|
|
336
|
-
},
|
|
337
|
-
{
|
|
338
|
-
name: 'Test Editor Plugin 3',
|
|
339
|
-
translations: { de: 'Test Editor Erweiterung 3' },
|
|
340
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20EditorPluginTest3%20extends%20HTMLElement%20%7B%0D%0A%20%20%20%20constructor%20%28%29%20%7B%0D%0A%09%2F%2F%20Create%20a%20shadow%20root%0D%0A%09this.attachShadow%28%7B%20mode%3A%20%22open%22%20%7D%29%3B%20%2F%2F%20sets%20and%20returns%20%27this.shadowRoot%27%0D%0A%0D%0A%09const%20info%20%3D%20wrapper.appendChild%28document.createElement%28%22span%22%29%29%3B%0D%0A%09info.setAttribute%28%22class%22%2C%20%22info%22%29%3B%0D%0A%09%2F%2F%20Take%20attribute%20content%20and%20put%20it%20inside%20the%20info%20span%0D%0A%09info.textContent%20%3D%20this.getAttribute%28%22docName%22%29%20%7C%7C%20%27no%20docName%20Test3%27%3B%0D%0A%0D%0A%09%2F%2F%20attach%20the%20created%20elements%20to%20the%20shadow%20DOM%0D%0A%09this.shadowRoot.append%28style%2C%20info%29%3B%0D%0A%20%20%20%20%7D%0D%0A%7D%3B',
|
|
341
|
-
icon: 'polymer',
|
|
342
|
-
active: true,
|
|
343
|
-
requireDoc: false,
|
|
344
|
-
},
|
|
345
|
-
{
|
|
346
|
-
name: 'Test Editor Plugin 4',
|
|
347
|
-
translations: { de: 'Test Editor Erweiterung 4' },
|
|
348
|
-
src: 'data:text/javascript;charset=utf-8,export%20default%20class%20TestEditorPlugin4%20extends%20HTMLElement%20%7B%0D%0A%20%20constructor%20%28%29%20%7B%20super%28%29%3B%20this.innerHTML%20%3D%20%60%3Cp%3ETest%20Editor%20Plugin%204%3C%2Fp%3E%60%3B%20%7D%0D%0A%7D',
|
|
349
|
-
icon: 'edit',
|
|
350
|
-
active: false,
|
|
351
|
-
requireDoc: true,
|
|
352
|
-
},
|
|
353
|
-
],
|
|
354
|
-
};
|
|
355
|
-
await editor.updateComplete;
|
|
356
|
-
await editorTabCount(2);
|
|
357
|
-
});
|
|
358
|
-
|
|
359
|
-
it('displays editor plugins', async () => {
|
|
360
|
-
await visualDiff(editor, `editor-plugins-${lang}`);
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
it('displays more tabs with a doc loaded', async () => {
|
|
364
|
-
editor.dispatchEvent(newOpenEvent(doc, 'test.scd'));
|
|
365
|
-
await editor.updateComplete;
|
|
366
|
-
await editorTabCount(3);
|
|
367
|
-
await timeout(500);
|
|
368
|
-
await visualDiff(editor, `editor-plugins-with-doc-${lang}`);
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
it('changes active editor plugin on tab click', async () => {
|
|
372
|
-
editor.shadowRoot
|
|
373
|
-
?.querySelector<OscdSecondaryTab>('oscd-secondary-tab:nth-of-type(2)')
|
|
374
|
-
?.click();
|
|
375
|
-
|
|
376
|
-
await editor.updateComplete;
|
|
377
|
-
await timeout(120);
|
|
378
|
-
await visualDiff(editor, `editor-plugins-selected-${lang}`);
|
|
379
|
-
});
|
|
380
|
-
});
|
|
381
|
-
}),
|
|
382
|
-
);
|