@theia/plugin-ext 1.75.0-next.21 → 1.75.0-next.25

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.
@@ -171,4 +171,195 @@ describe('TheiaPluginScanner configuration default derivation', () => {
171
171
  (0, chai_1.expect)(props['ext.nullable'].default).to.equal(null);
172
172
  });
173
173
  });
174
+ describe('TheiaPluginScanner - readWalkthroughs', () => {
175
+ let scannerInstance;
176
+ before(() => {
177
+ scannerInstance = new scanner_theia_1.TheiaPluginScanner();
178
+ scannerInstance.logger = { error: () => { }, warn: () => { }, info: () => { }, debug: () => { } };
179
+ });
180
+ function callReadWalkthroughs(walkthroughs, publisher = 'test-publisher', name = 'test-plugin', icon) {
181
+ const pkg = {
182
+ name,
183
+ publisher,
184
+ version: '1.0.0',
185
+ icon,
186
+ contributes: { walkthroughs }
187
+ };
188
+ return scannerInstance.readWalkthroughs(pkg);
189
+ }
190
+ it('should resolve the icon of the contributing extension', () => {
191
+ const result = callReadWalkthroughs([{
192
+ id: 'wt1',
193
+ title: 'WT',
194
+ description: 'desc',
195
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
196
+ }], 'test-publisher', 'test-plugin', 'images/icon.png');
197
+ (0, chai_1.expect)(result[0].pluginIcon).to.equal('hostedPlugin/test_publisher_test_plugin/images%2Ficon.png');
198
+ });
199
+ it('should leave the extension icon undefined when the package declares none', () => {
200
+ const result = callReadWalkthroughs([{
201
+ id: 'wt1',
202
+ title: 'WT',
203
+ description: 'desc',
204
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
205
+ }]);
206
+ (0, chai_1.expect)(result[0].pluginIcon).to.be.undefined;
207
+ });
208
+ it('should read a valid walkthrough contribution', () => {
209
+ const result = callReadWalkthroughs([{
210
+ id: 'my-walkthrough',
211
+ title: 'My Walkthrough',
212
+ description: 'A test walkthrough',
213
+ steps: [{
214
+ id: 'step1',
215
+ title: 'Step 1',
216
+ description: 'First step',
217
+ completionEvents: ['onCommand:my.command']
218
+ }]
219
+ }]);
220
+ (0, chai_1.expect)(result).to.not.be.undefined;
221
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
222
+ (0, chai_1.expect)(result[0].id).to.equal('my-walkthrough');
223
+ (0, chai_1.expect)(result[0].title).to.equal('My Walkthrough');
224
+ (0, chai_1.expect)(result[0].pluginId).to.equal('test-publisher.test-plugin');
225
+ (0, chai_1.expect)(result[0].steps).to.have.lengthOf(1);
226
+ (0, chai_1.expect)(result[0].steps[0].id).to.equal('step1');
227
+ (0, chai_1.expect)(result[0].steps[0].completionEvents).to.deep.equal(['onCommand:my.command']);
228
+ });
229
+ it('should skip walkthroughs with missing id', () => {
230
+ const result = callReadWalkthroughs([{
231
+ id: '',
232
+ title: 'No ID Walkthrough',
233
+ description: 'Missing id',
234
+ steps: []
235
+ }]);
236
+ (0, chai_1.expect)(result).to.be.undefined;
237
+ });
238
+ it('should skip walkthroughs with missing title', () => {
239
+ const result = callReadWalkthroughs([{
240
+ id: 'valid-id',
241
+ title: '',
242
+ description: 'Missing title',
243
+ steps: []
244
+ }]);
245
+ (0, chai_1.expect)(result).to.be.undefined;
246
+ });
247
+ it('should skip walkthrough steps with missing id', () => {
248
+ const result = callReadWalkthroughs([{
249
+ id: 'wt1',
250
+ title: 'WT1',
251
+ description: 'desc',
252
+ steps: [
253
+ { id: '', title: 'Step', description: 'desc' },
254
+ { id: 'valid-step', title: 'Valid Step', description: 'desc' }
255
+ ]
256
+ }]);
257
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
258
+ (0, chai_1.expect)(result[0].steps).to.have.lengthOf(1);
259
+ (0, chai_1.expect)(result[0].steps[0].id).to.equal('valid-step');
260
+ });
261
+ it('should return undefined when no walkthroughs are contributed', () => {
262
+ const pkg = { name: 'test', publisher: 'pub', contributes: {} };
263
+ const result = scannerInstance.readWalkthroughs(pkg);
264
+ (0, chai_1.expect)(result).to.be.undefined;
265
+ });
266
+ it('should read multiple walkthroughs', () => {
267
+ const result = callReadWalkthroughs([
268
+ {
269
+ id: 'wt1',
270
+ title: 'Walkthrough 1',
271
+ description: 'First',
272
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
273
+ },
274
+ {
275
+ id: 'wt2',
276
+ title: 'Walkthrough 2',
277
+ description: 'Second',
278
+ steps: [{ id: 's2', title: 'S2', description: 'd2' }]
279
+ }
280
+ ]);
281
+ (0, chai_1.expect)(result).to.have.lengthOf(2);
282
+ (0, chai_1.expect)(result[0].id).to.equal('wt1');
283
+ (0, chai_1.expect)(result[1].id).to.equal('wt2');
284
+ });
285
+ it('should preserve walkthrough optional fields', () => {
286
+ const result = callReadWalkthroughs([{
287
+ id: 'wt-full',
288
+ title: 'Full Walkthrough',
289
+ description: 'Full desc',
290
+ steps: [{
291
+ id: 's1',
292
+ title: 'S1',
293
+ description: 'step desc',
294
+ when: 'isLinux',
295
+ media: { markdown: 'content.md' },
296
+ completionEvents: ['onCommand:test']
297
+ }],
298
+ when: 'workspacePlatform == linux',
299
+ icon: 'book'
300
+ }]);
301
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
302
+ (0, chai_1.expect)(result[0].when).to.equal('workspacePlatform == linux');
303
+ (0, chai_1.expect)(result[0].icon).to.equal('book');
304
+ (0, chai_1.expect)(result[0].steps[0].when).to.equal('isLinux');
305
+ (0, chai_1.expect)(result[0].steps[0].media).to.deep.equal({ markdown: 'hostedPlugin/test_publisher_test_plugin/content.md' });
306
+ });
307
+ it('should lowercase pluginId', () => {
308
+ const result = callReadWalkthroughs([{
309
+ id: 'wt1',
310
+ title: 'WT',
311
+ description: 'desc',
312
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
313
+ }], 'MyPublisher', 'MyPlugin');
314
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
315
+ (0, chai_1.expect)(result[0].pluginId).to.equal('mypublisher.myplugin');
316
+ });
317
+ it('should resolve media image paths through toPluginUrl', () => {
318
+ const result = callReadWalkthroughs([{
319
+ id: 'wt1',
320
+ title: 'WT',
321
+ description: 'desc',
322
+ steps: [{
323
+ id: 's1',
324
+ title: 'S1',
325
+ description: 'd1',
326
+ media: { image: 'media/image.png' }
327
+ }]
328
+ }]);
329
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
330
+ (0, chai_1.expect)(result[0].steps[0].media).to.deep.equal({ image: 'hostedPlugin/test_publisher_test_plugin/media%2Fimage.png' });
331
+ });
332
+ it('should keep the alt text of svg media', () => {
333
+ const result = callReadWalkthroughs([{
334
+ id: 'wt1',
335
+ title: 'WT',
336
+ description: 'desc',
337
+ steps: [{
338
+ id: 's1',
339
+ title: 'S1',
340
+ description: 'd1',
341
+ media: { svg: 'media/icon.svg', altText: 'An icon' }
342
+ }]
343
+ }]);
344
+ (0, chai_1.expect)(result[0].steps[0].media).to.deep.equal({
345
+ svg: 'hostedPlugin/test_publisher_test_plugin/media%2Ficon.svg',
346
+ altText: 'An icon'
347
+ });
348
+ });
349
+ it('should resolve media svg paths through toPluginUrl', () => {
350
+ const result = callReadWalkthroughs([{
351
+ id: 'wt1',
352
+ title: 'WT',
353
+ description: 'desc',
354
+ steps: [{
355
+ id: 's1',
356
+ title: 'S1',
357
+ description: 'd1',
358
+ media: { svg: 'media/icon.svg' }
359
+ }]
360
+ }]);
361
+ (0, chai_1.expect)(result).to.have.lengthOf(1);
362
+ (0, chai_1.expect)(result[0].steps[0].media).to.deep.equal({ svg: 'hostedPlugin/test_publisher_test_plugin/media%2Ficon.svg' });
363
+ });
364
+ });
174
365
  //# sourceMappingURL=scanner-theia.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner-theia.spec.js","sourceRoot":"","sources":["../../../../src/hosted/node/scanners/scanner-theia.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner-theia.spec.js","sourceRoot":"","sources":["../../../../src/hosted/node/scanners/scanner-theia.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,39 +1,39 @@
1
1
  {
2
2
  "name": "@theia/plugin-ext",
3
- "version": "1.75.0-next.21+fa058c354",
3
+ "version": "1.75.0-next.25+6226ed5b7",
4
4
  "description": "Theia - Plugin Extension",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
7
7
  "dependencies": {
8
- "@theia/ai-core": "1.75.0-next.21+fa058c354",
9
- "@theia/ai-mcp": "1.75.0-next.21+fa058c354",
10
- "@theia/bulk-edit": "1.75.0-next.21+fa058c354",
11
- "@theia/callhierarchy": "1.75.0-next.21+fa058c354",
12
- "@theia/console": "1.75.0-next.21+fa058c354",
13
- "@theia/core": "1.75.0-next.21+fa058c354",
14
- "@theia/debug": "1.75.0-next.21+fa058c354",
15
- "@theia/editor": "1.75.0-next.21+fa058c354",
16
- "@theia/editor-preview": "1.75.0-next.21+fa058c354",
17
- "@theia/file-search": "1.75.0-next.21+fa058c354",
18
- "@theia/filesystem": "1.75.0-next.21+fa058c354",
19
- "@theia/markers": "1.75.0-next.21+fa058c354",
20
- "@theia/messages": "1.75.0-next.21+fa058c354",
21
- "@theia/monaco": "1.75.0-next.21+fa058c354",
8
+ "@theia/ai-core": "1.75.0-next.25+6226ed5b7",
9
+ "@theia/ai-mcp": "1.75.0-next.25+6226ed5b7",
10
+ "@theia/bulk-edit": "1.75.0-next.25+6226ed5b7",
11
+ "@theia/callhierarchy": "1.75.0-next.25+6226ed5b7",
12
+ "@theia/console": "1.75.0-next.25+6226ed5b7",
13
+ "@theia/core": "1.75.0-next.25+6226ed5b7",
14
+ "@theia/debug": "1.75.0-next.25+6226ed5b7",
15
+ "@theia/editor": "1.75.0-next.25+6226ed5b7",
16
+ "@theia/editor-preview": "1.75.0-next.25+6226ed5b7",
17
+ "@theia/file-search": "1.75.0-next.25+6226ed5b7",
18
+ "@theia/filesystem": "1.75.0-next.25+6226ed5b7",
19
+ "@theia/markers": "1.75.0-next.25+6226ed5b7",
20
+ "@theia/messages": "1.75.0-next.25+6226ed5b7",
21
+ "@theia/monaco": "1.75.0-next.25+6226ed5b7",
22
22
  "@theia/monaco-editor-core": "1.108.201",
23
- "@theia/navigator": "1.75.0-next.21+fa058c354",
24
- "@theia/notebook": "1.75.0-next.21+fa058c354",
25
- "@theia/output": "1.75.0-next.21+fa058c354",
26
- "@theia/plugin": "1.75.0-next.21+fa058c354",
27
- "@theia/preferences": "1.75.0-next.21+fa058c354",
28
- "@theia/scm": "1.75.0-next.21+fa058c354",
29
- "@theia/search-in-workspace": "1.75.0-next.21+fa058c354",
30
- "@theia/task": "1.75.0-next.21+fa058c354",
31
- "@theia/terminal": "1.75.0-next.21+fa058c354",
32
- "@theia/test": "1.75.0-next.21+fa058c354",
33
- "@theia/timeline": "1.75.0-next.21+fa058c354",
34
- "@theia/typehierarchy": "1.75.0-next.21+fa058c354",
35
- "@theia/variable-resolver": "1.75.0-next.21+fa058c354",
36
- "@theia/workspace": "1.75.0-next.21+fa058c354",
23
+ "@theia/navigator": "1.75.0-next.25+6226ed5b7",
24
+ "@theia/notebook": "1.75.0-next.25+6226ed5b7",
25
+ "@theia/output": "1.75.0-next.25+6226ed5b7",
26
+ "@theia/plugin": "1.75.0-next.25+6226ed5b7",
27
+ "@theia/preferences": "1.75.0-next.25+6226ed5b7",
28
+ "@theia/scm": "1.75.0-next.25+6226ed5b7",
29
+ "@theia/search-in-workspace": "1.75.0-next.25+6226ed5b7",
30
+ "@theia/task": "1.75.0-next.25+6226ed5b7",
31
+ "@theia/terminal": "1.75.0-next.25+6226ed5b7",
32
+ "@theia/test": "1.75.0-next.25+6226ed5b7",
33
+ "@theia/timeline": "1.75.0-next.25+6226ed5b7",
34
+ "@theia/typehierarchy": "1.75.0-next.25+6226ed5b7",
35
+ "@theia/variable-resolver": "1.75.0-next.25+6226ed5b7",
36
+ "@theia/workspace": "1.75.0-next.25+6226ed5b7",
37
37
  "@types/mime": "^2.0.3",
38
38
  "@vscode/debugprotocol": "^1.68.0",
39
39
  "@vscode/proxy-agent": "^0.13.2",
@@ -98,5 +98,5 @@
98
98
  "nyc": {
99
99
  "extends": "../../configs/nyc.json"
100
100
  },
101
- "gitHead": "fa058c354e5bfa630cb6766d042131cc8de8a7ff"
101
+ "gitHead": "6226ed5b7443f45eddf4a95aac59a586070c682b"
102
102
  }
@@ -114,6 +114,34 @@ export interface PluginPackageContribution {
114
114
  notebookPreload?: PluginPackageNotebookPreload[];
115
115
  mcpServerDefinitionProviders?: PluginPackageMcpServerDefinitionProviderContribution[];
116
116
  languageModelTools?: PluginPackageLanguageModelToolContribution[];
117
+ walkthroughs?: PluginPackageWalkthrough[];
118
+ }
119
+
120
+ /**
121
+ * Media of a walkthrough step as contributed in `package.json`. Only the light and dark variant of an
122
+ * image are mandatory, the high contrast ones were added to the VS Code schema later.
123
+ */
124
+ export type PluginPackageWalkthroughStepMedia =
125
+ { markdown: string }
126
+ | { image: string | { dark: string; light: string; hc?: string; hcLight?: string }; altText?: string }
127
+ | { svg: string; altText?: string };
128
+
129
+ export interface PluginPackageWalkthroughStep {
130
+ id: string;
131
+ title: string;
132
+ description: string;
133
+ media?: PluginPackageWalkthroughStepMedia;
134
+ completionEvents?: string[];
135
+ when?: string;
136
+ }
137
+
138
+ export interface PluginPackageWalkthrough {
139
+ id: string;
140
+ title: string;
141
+ description: string;
142
+ steps: PluginPackageWalkthroughStep[];
143
+ when?: string;
144
+ icon?: string;
117
145
  }
118
146
 
119
147
  export interface PluginPackageNotebook {
@@ -645,6 +673,7 @@ export interface PluginContribution {
645
673
  notebooks?: NotebookContribution[];
646
674
  notebookRenderer?: NotebookRendererContribution[];
647
675
  notebookPreload?: notebookPreloadContribution[];
676
+ walkthroughs?: WalkthroughContribution[];
648
677
  }
649
678
  export interface NotebookContribution {
650
679
  type: string;
@@ -666,6 +695,35 @@ export interface notebookPreloadContribution {
666
695
  entrypoint: string;
667
696
  }
668
697
 
698
+ /**
699
+ * Media of a walkthrough step with every path resolved and every image variant filled in.
700
+ */
701
+ export type WalkthroughStepMedia =
702
+ { markdown: string }
703
+ | { image: string | { dark: string; light: string; hc: string; hcLight: string }; altText?: string }
704
+ | { svg: string; altText?: string };
705
+
706
+ export interface WalkthroughStepContribution {
707
+ id: string;
708
+ title: string;
709
+ description: string;
710
+ media?: WalkthroughStepMedia;
711
+ completionEvents?: string[];
712
+ when?: string;
713
+ }
714
+
715
+ export interface WalkthroughContribution {
716
+ id: string;
717
+ title: string;
718
+ description: string;
719
+ steps: WalkthroughStepContribution[];
720
+ when?: string;
721
+ icon?: string;
722
+ pluginId: string;
723
+ /** Icon of the contributing extension, as a backend relative path. */
724
+ pluginIcon?: string;
725
+ }
726
+
669
727
  export interface AuthenticationProviderInformation {
670
728
  id: string;
671
729
  label: string;
@@ -21,7 +21,7 @@ import * as os from 'os';
21
21
  import * as path from 'path';
22
22
  import * as fs from 'fs';
23
23
  import { AbstractPluginScanner, TheiaPluginScanner } from './scanner-theia';
24
- import { PluginPackage, PluginEntryPoint } from '../../../common/plugin-protocol';
24
+ import { PluginPackage, PluginEntryPoint, PluginPackageWalkthrough, WalkthroughContribution } from '../../../common/plugin-protocol';
25
25
  import { PreferenceSchema } from '@theia/core/lib/common/preferences/preference-schema';
26
26
  import URI from '@theia/core/lib/common/uri';
27
27
 
@@ -206,3 +206,227 @@ describe('TheiaPluginScanner configuration default derivation', () => {
206
206
  expect(props['ext.nullable'].default).to.equal(null);
207
207
  });
208
208
  });
209
+
210
+ describe('TheiaPluginScanner - readWalkthroughs', () => {
211
+ let scannerInstance: TheiaPluginScanner;
212
+
213
+ before(() => {
214
+ scannerInstance = new (TheiaPluginScanner as any)();
215
+ (scannerInstance as any).logger = { error: () => { }, warn: () => { }, info: () => { }, debug: () => { } };
216
+ });
217
+
218
+ function callReadWalkthroughs(
219
+ walkthroughs: PluginPackageWalkthrough[],
220
+ publisher = 'test-publisher',
221
+ name = 'test-plugin',
222
+ icon?: string
223
+ ): WalkthroughContribution[] | undefined {
224
+ const pkg = {
225
+ name,
226
+ publisher,
227
+ version: '1.0.0',
228
+ icon,
229
+ contributes: { walkthroughs }
230
+ } as any;
231
+ return (scannerInstance as any).readWalkthroughs(pkg);
232
+ }
233
+
234
+ it('should resolve the icon of the contributing extension', () => {
235
+ const result = callReadWalkthroughs([{
236
+ id: 'wt1',
237
+ title: 'WT',
238
+ description: 'desc',
239
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
240
+ }], 'test-publisher', 'test-plugin', 'images/icon.png');
241
+
242
+ expect(result![0].pluginIcon).to.equal('hostedPlugin/test_publisher_test_plugin/images%2Ficon.png');
243
+ });
244
+
245
+ it('should leave the extension icon undefined when the package declares none', () => {
246
+ const result = callReadWalkthroughs([{
247
+ id: 'wt1',
248
+ title: 'WT',
249
+ description: 'desc',
250
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
251
+ }]);
252
+
253
+ expect(result![0].pluginIcon).to.be.undefined;
254
+ });
255
+
256
+ it('should read a valid walkthrough contribution', () => {
257
+ const result = callReadWalkthroughs([{
258
+ id: 'my-walkthrough',
259
+ title: 'My Walkthrough',
260
+ description: 'A test walkthrough',
261
+ steps: [{
262
+ id: 'step1',
263
+ title: 'Step 1',
264
+ description: 'First step',
265
+ completionEvents: ['onCommand:my.command']
266
+ }]
267
+ }]);
268
+
269
+ expect(result).to.not.be.undefined;
270
+ expect(result).to.have.lengthOf(1);
271
+ expect(result![0].id).to.equal('my-walkthrough');
272
+ expect(result![0].title).to.equal('My Walkthrough');
273
+ expect(result![0].pluginId).to.equal('test-publisher.test-plugin');
274
+ expect(result![0].steps).to.have.lengthOf(1);
275
+ expect(result![0].steps[0].id).to.equal('step1');
276
+ expect(result![0].steps[0].completionEvents).to.deep.equal(['onCommand:my.command']);
277
+ });
278
+
279
+ it('should skip walkthroughs with missing id', () => {
280
+ const result = callReadWalkthroughs([{
281
+ id: '',
282
+ title: 'No ID Walkthrough',
283
+ description: 'Missing id',
284
+ steps: []
285
+ }]);
286
+
287
+ expect(result).to.be.undefined;
288
+ });
289
+
290
+ it('should skip walkthroughs with missing title', () => {
291
+ const result = callReadWalkthroughs([{
292
+ id: 'valid-id',
293
+ title: '',
294
+ description: 'Missing title',
295
+ steps: []
296
+ }]);
297
+
298
+ expect(result).to.be.undefined;
299
+ });
300
+
301
+ it('should skip walkthrough steps with missing id', () => {
302
+ const result = callReadWalkthroughs([{
303
+ id: 'wt1',
304
+ title: 'WT1',
305
+ description: 'desc',
306
+ steps: [
307
+ { id: '', title: 'Step', description: 'desc' },
308
+ { id: 'valid-step', title: 'Valid Step', description: 'desc' }
309
+ ]
310
+ }]);
311
+
312
+ expect(result).to.have.lengthOf(1);
313
+ expect(result![0].steps).to.have.lengthOf(1);
314
+ expect(result![0].steps[0].id).to.equal('valid-step');
315
+ });
316
+
317
+ it('should return undefined when no walkthroughs are contributed', () => {
318
+ const pkg = { name: 'test', publisher: 'pub', contributes: {} } as any;
319
+ const result = (scannerInstance as any).readWalkthroughs(pkg);
320
+ expect(result).to.be.undefined;
321
+ });
322
+
323
+ it('should read multiple walkthroughs', () => {
324
+ const result = callReadWalkthroughs([
325
+ {
326
+ id: 'wt1',
327
+ title: 'Walkthrough 1',
328
+ description: 'First',
329
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
330
+ },
331
+ {
332
+ id: 'wt2',
333
+ title: 'Walkthrough 2',
334
+ description: 'Second',
335
+ steps: [{ id: 's2', title: 'S2', description: 'd2' }]
336
+ }
337
+ ]);
338
+
339
+ expect(result).to.have.lengthOf(2);
340
+ expect(result![0].id).to.equal('wt1');
341
+ expect(result![1].id).to.equal('wt2');
342
+ });
343
+
344
+ it('should preserve walkthrough optional fields', () => {
345
+ const result = callReadWalkthroughs([{
346
+ id: 'wt-full',
347
+ title: 'Full Walkthrough',
348
+ description: 'Full desc',
349
+ steps: [{
350
+ id: 's1',
351
+ title: 'S1',
352
+ description: 'step desc',
353
+ when: 'isLinux',
354
+ media: { markdown: 'content.md' },
355
+ completionEvents: ['onCommand:test']
356
+ }],
357
+ when: 'workspacePlatform == linux',
358
+ icon: 'book'
359
+ }]);
360
+
361
+ expect(result).to.have.lengthOf(1);
362
+ expect(result![0].when).to.equal('workspacePlatform == linux');
363
+ expect(result![0].icon).to.equal('book');
364
+ expect(result![0].steps[0].when).to.equal('isLinux');
365
+ expect(result![0].steps[0].media).to.deep.equal({ markdown: 'hostedPlugin/test_publisher_test_plugin/content.md' });
366
+ });
367
+
368
+ it('should lowercase pluginId', () => {
369
+ const result = callReadWalkthroughs([{
370
+ id: 'wt1',
371
+ title: 'WT',
372
+ description: 'desc',
373
+ steps: [{ id: 's1', title: 'S1', description: 'd1' }]
374
+ }], 'MyPublisher', 'MyPlugin');
375
+
376
+ expect(result).to.have.lengthOf(1);
377
+ expect(result![0].pluginId).to.equal('mypublisher.myplugin');
378
+ });
379
+
380
+ it('should resolve media image paths through toPluginUrl', () => {
381
+ const result = callReadWalkthroughs([{
382
+ id: 'wt1',
383
+ title: 'WT',
384
+ description: 'desc',
385
+ steps: [{
386
+ id: 's1',
387
+ title: 'S1',
388
+ description: 'd1',
389
+ media: { image: 'media/image.png' }
390
+ }]
391
+ }]);
392
+
393
+ expect(result).to.have.lengthOf(1);
394
+ expect(result![0].steps[0].media).to.deep.equal({ image: 'hostedPlugin/test_publisher_test_plugin/media%2Fimage.png' });
395
+ });
396
+
397
+ it('should keep the alt text of svg media', () => {
398
+ const result = callReadWalkthroughs([{
399
+ id: 'wt1',
400
+ title: 'WT',
401
+ description: 'desc',
402
+ steps: [{
403
+ id: 's1',
404
+ title: 'S1',
405
+ description: 'd1',
406
+ media: { svg: 'media/icon.svg', altText: 'An icon' }
407
+ }]
408
+ }]);
409
+
410
+ expect(result![0].steps[0].media).to.deep.equal({
411
+ svg: 'hostedPlugin/test_publisher_test_plugin/media%2Ficon.svg',
412
+ altText: 'An icon'
413
+ });
414
+ });
415
+
416
+ it('should resolve media svg paths through toPluginUrl', () => {
417
+ const result = callReadWalkthroughs([{
418
+ id: 'wt1',
419
+ title: 'WT',
420
+ description: 'desc',
421
+ steps: [{
422
+ id: 's1',
423
+ title: 'S1',
424
+ description: 'd1',
425
+ media: { svg: 'media/icon.svg' }
426
+ }]
427
+ }]);
428
+
429
+ expect(result).to.have.lengthOf(1);
430
+ expect(result![0].steps[0].media).to.deep.equal({ svg: 'hostedPlugin/test_publisher_test_plugin/media%2Ficon.svg' });
431
+ });
432
+ });