@sjcrh/proteinpaint-front 2.67.2-0 → 2.69.0

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/bundles.tgz CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjcrh/proteinpaint-front",
3
- "version": "2.67.2-0",
3
+ "version": "2.69.0",
4
4
  "browser": "src/app.js",
5
5
  "main": "src/index.js",
6
6
  "bin": "init.js",
@@ -12,7 +12,7 @@
12
12
  "test:integration": "echo 'TODO: front integration tests'"
13
13
  },
14
14
  "devDependencies": {
15
- "@sjcrh/proteinpaint-client": "2.67.2-0",
15
+ "@sjcrh/proteinpaint-client": "2.69.0",
16
16
  "webpack": "^5.76.0",
17
17
  "webpack-cli": "^4.9.2",
18
18
  "webpack-node-externals": "^3.0.0",
@@ -48,6 +48,15 @@
48
48
  "pmid": "38593228",
49
49
  "pmidURL": "https://pubmed.ncbi.nlm.nih.gov/38593228/",
50
50
  "doi": "https://doi.org/10.1158/2159-8290.cd-23-1441"
51
+ },
52
+ {
53
+ "id": 1006,
54
+ "title": "Molecular classification and outcome of children with rare CNS embryonal tumors: results from St. Jude Children's Research Hospital including the multi-center SJYC07 and SJMB03 clinical trials",
55
+ "year": "2022",
56
+ "journal": "Acta Neuropathologica",
57
+ "pmid": "35982322",
58
+ "pmidURL": "https://pubmed.ncbi.nlm.nih.gov/35982322/",
59
+ "doi": "https://doi.org/10.1007/s00401-022-02484-7"
51
60
  }
52
61
  ]
53
62
  }
@@ -0,0 +1,55 @@
1
+ {
2
+ "ribbonMessage": "We're pleased to present our reenvisioned sample matrix plot, with new filtering and sorting features. Please see the examples below.",
3
+ "ppcalls": [
4
+ {
5
+ "message": "This glioma matrix is available on the GDC Data Portal.",
6
+ "label": "GDC Gliomas Cohort",
7
+ "runargs": {
8
+ "nobox": 1,
9
+ "noheader": 1,
10
+ "parseurl": false,
11
+ "launchGdcMatrix": true,
12
+ "filter0": { "op": "in", "content": { "field": "cases.disease_type", "value": "Gliomas" } },
13
+ "settings": { "matrix": { "maxGenes": 20, "maxSample": 10000 }},
14
+ "termgroups":[{"lst":[
15
+ {"id":"case.disease_type"},
16
+ {"id":"case.diagnoses.age_at_diagnosis","q":{"mode":"continuous"}}
17
+ ]}]
18
+ },
19
+ "testSpec": {
20
+ "expected": {
21
+ "image": 1
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "label": "PNET Tumor Cohort",
27
+ "runargs": {
28
+ "nobox": 1,
29
+ "noheader": 1,
30
+ "parseurl": false,
31
+ "mass": {
32
+ "state": {
33
+ "dslabel": "PNET",
34
+ "genome": "hg19",
35
+ "nav": {
36
+ "header_mode": "hidden"
37
+ },
38
+ "plots": [
39
+ {
40
+ "chartType": "matrix",
41
+ "name": "Matrix plot"
42
+ }
43
+ ]
44
+ }
45
+ }
46
+ },
47
+ "testSpec": {
48
+ "expected": {
49
+ "image": 1
50
+ }
51
+ },
52
+ "data_source": 1006
53
+ }
54
+ ]
55
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "ribbonMessage": "We're excited to announce our newest app, the <b>Disco Plot!</b>",
2
+ "ribbonMessage": "Please see our new example using GDC data.",
3
3
  "ppcalls": [
4
4
  {
5
5
  "isUi": true,
@@ -11,6 +11,7 @@
11
11
  }
12
12
  },
13
13
  {
14
+ "label": "Custom Data",
14
15
  "message": "In this plot, all chromosomes of the genome are arranged in a circle. Multiple rings along the circle indicates example data points of mutation, copy number change, and structural variation/fusion events. Gene labels are based on mutation and sv/fusion events.",
15
16
  "runargs": {
16
17
  "noheader": true,
@@ -64,6 +65,27 @@
64
65
  "g": 2
65
66
  }
66
67
  }
68
+ },
69
+ {
70
+ "label": "GDC Sample Data",
71
+ "urlparam": "?genome=hg38&dslabel=GDC&disco=1&sample=TCGA-85-7710-01A",
72
+ "runargs": {
73
+ "noheader": true,
74
+ "nobox": true,
75
+ "genome": "hg38",
76
+ "disco": {
77
+ "dslabel": "GDC",
78
+ "genome": "hg38",
79
+ "sample_id": "TCGA-85-7710-01A"
80
+ }
81
+ },
82
+ "testSpec": {
83
+ "button": 1,
84
+ "expected": {
85
+ "svg": 1,
86
+ "g": 2
87
+ }
88
+ }
67
89
  }
68
90
  ]
69
91
  }
@@ -0,0 +1,209 @@
1
+ {
2
+ "ribbonMessage": "Please explore our newest tool, gene expression clustering.",
3
+ "ppcalls": [
4
+ {
5
+ "urlparam":"/?noheader=1&mass={%22dslabel%22:%22GDC%22,%22genome%22:%22hg38%22,%22nav%22:{%22header_mode%22:%22hidden%22},%22termfilter%22:{%22filter0%22:{%22op%22:%22and%22,%22content%22:[{%22op%22:%22in%22,%22content%22:{%22field%22:%22cases.project.project_id%22,%22value%22:[%22TCGA-GBM%22]}}]}},%22plots%22:[{%22chartType%22:%22hierCluster%22,%22dataType%22:%22geneExpression%22,%22terms%22:[{%22gene%22:%22AKT1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22MYC%22,%22type%22:%22geneExpression%22},{%22gene%22:%22YAP1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22CD109%22,%22type%22:%22geneExpression%22},{%22gene%22:%22BCL6%22,%22type%22:%22geneExpression%22},{%22gene%22:%22BRAF%22,%22type%22:%22geneExpression%22},{%22gene%22:%22CDKN2A%22,%22type%22:%22geneExpression%22},{%22gene%22:%22CD34%22,%22type%22:%22geneExpression%22},{%22gene%22:%22ALDH1A3%22,%22type%22:%22geneExpression%22},{%22gene%22:%22CTNNB1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22CXCL14%22,%22type%22:%22geneExpression%22},{%22gene%22:%22E2F1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22EGFR%22,%22type%22:%22geneExpression%22},{%22gene%22:%22PTEN%22,%22type%22:%22geneExpression%22},{%22gene%22:%22FAT1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22FGFR1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22FOXM1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22IDH1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22IDH2%22,%22type%22:%22geneExpression%22},{%22gene%22:%22HOXA10%22,%22type%22:%22geneExpression%22},{%22gene%22:%22HOXA13%22,%22type%22:%22geneExpression%22},{%22gene%22:%22HOXA9%22,%22type%22:%22geneExpression%22},{%22gene%22:%22LAT1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22MAPK1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22MAPK3%22,%22type%22:%22geneExpression%22},{%22gene%22:%22MMP1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22MGMT%22,%22type%22:%22geneExpression%22},{%22gene%22:%22NOTCH3%22,%22type%22:%22geneExpression%22},{%22gene%22:%22PIK3CA%22,%22type%22:%22geneExpression%22},{%22gene%22:%22PDGFRA%22,%22type%22:%22geneExpression%22},{%22gene%22:%22RB1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22TP53%22,%22type%22:%22geneExpression%22},{%22gene%22:%22WWTR1%22,%22type%22:%22geneExpression%22},{%22gene%22:%22ATRX%22,%22type%22:%22geneExpression%22},{%22gene%22:%22ROS1%22,%22type%22:%22geneExpression%22}],%22termgroups%22:[{%22name%22:%22Variables%22,%22lst%22:[{%22id%22:%22case.diagnoses.age_at_diagnosis%22},{%22id%22:%22case.demographic.gender%22},{%22id%22:%22case.project.project_id%22},{%22id%22:%22case.tissue_source_site.name%22}]}]}]}",
6
+ "runargs": {
7
+ "nobox": 1,
8
+ "noheader": 1,
9
+ "mass": {
10
+ "state": {
11
+ "dslabel": "GDC",
12
+ "genome": "hg38",
13
+ "nav": {
14
+ "header_mode": "hidden"
15
+ },
16
+ "termfilter": {
17
+ "filter0": {
18
+ "op": "and",
19
+ "content": [
20
+ {
21
+ "op": "in",
22
+ "content": {
23
+ "field": "cases.project.project_id",
24
+ "value": [
25
+ "TCGA-GBM"
26
+ ]
27
+ }
28
+ }
29
+ ]
30
+ }
31
+ },
32
+ "plots": [
33
+ {
34
+ "chartType": "hierCluster",
35
+ "dataType": "geneExpression",
36
+ "terms": [
37
+ {
38
+ "gene": "AKT1",
39
+ "type": "geneExpression"
40
+ },
41
+ {
42
+ "gene": "MYC",
43
+ "type": "geneExpression"
44
+ },
45
+ {
46
+ "gene": "YAP1",
47
+ "type": "geneExpression"
48
+ },
49
+ {
50
+ "gene": "CD109",
51
+ "type": "geneExpression"
52
+ },
53
+ {
54
+ "gene": "BCL6",
55
+ "type": "geneExpression"
56
+ },
57
+ {
58
+ "gene": "BRAF",
59
+ "type": "geneExpression"
60
+ },
61
+ {
62
+ "gene": "CDKN2A",
63
+ "type": "geneExpression"
64
+ },
65
+ {
66
+ "gene": "CD34",
67
+ "type": "geneExpression"
68
+ },
69
+ {
70
+ "gene": "ALDH1A3",
71
+ "type": "geneExpression"
72
+ },
73
+ {
74
+ "gene": "CTNNB1",
75
+ "type": "geneExpression"
76
+ },
77
+ {
78
+ "gene": "CXCL14",
79
+ "type": "geneExpression"
80
+ },
81
+ {
82
+ "gene": "E2F1",
83
+ "type": "geneExpression"
84
+ },
85
+ {
86
+ "gene": "EGFR",
87
+ "type": "geneExpression"
88
+ },
89
+ {
90
+ "gene": "PTEN",
91
+ "type": "geneExpression"
92
+ },
93
+ {
94
+ "gene": "FAT1",
95
+ "type": "geneExpression"
96
+ },
97
+ {
98
+ "gene": "FGFR1",
99
+ "type": "geneExpression"
100
+ },
101
+ {
102
+ "gene": "FOXM1",
103
+ "type": "geneExpression"
104
+ },
105
+ {
106
+ "gene": "IDH1",
107
+ "type": "geneExpression"
108
+ },
109
+ {
110
+ "gene": "IDH2",
111
+ "type": "geneExpression"
112
+ },
113
+ {
114
+ "gene": "HOXA10",
115
+ "type": "geneExpression"
116
+ },
117
+ {
118
+ "gene": "HOXA13",
119
+ "type": "geneExpression"
120
+ },
121
+ {
122
+ "gene": "HOXA9",
123
+ "type": "geneExpression"
124
+ },
125
+ {
126
+ "gene": "LAT1",
127
+ "type": "geneExpression"
128
+ },
129
+ {
130
+ "gene": "MAPK1",
131
+ "type": "geneExpression"
132
+ },
133
+ {
134
+ "gene": "MAPK3",
135
+ "type": "geneExpression"
136
+ },
137
+ {
138
+ "gene": "MMP1",
139
+ "type": "geneExpression"
140
+ },
141
+ {
142
+ "gene": "MGMT",
143
+ "type": "geneExpression"
144
+ },
145
+ {
146
+ "gene": "NOTCH3",
147
+ "type": "geneExpression"
148
+ },
149
+ {
150
+ "gene": "PIK3CA",
151
+ "type": "geneExpression"
152
+ },
153
+ {
154
+ "gene": "PDGFRA",
155
+ "type": "geneExpression"
156
+ },
157
+ {
158
+ "gene": "RB1",
159
+ "type": "geneExpression"
160
+ },
161
+ {
162
+ "gene": "TP53",
163
+ "type": "geneExpression"
164
+ },
165
+ {
166
+ "gene": "WWTR1",
167
+ "type": "geneExpression"
168
+ },
169
+ {
170
+ "gene": "ATRX",
171
+ "type": "geneExpression"
172
+ },
173
+ {
174
+ "gene": "ROS1",
175
+ "type": "geneExpression"
176
+ }
177
+ ],
178
+ "termgroups": [
179
+ {
180
+ "name": "Variables",
181
+ "lst": [
182
+ {
183
+ "id": "case.diagnoses.age_at_diagnosis"
184
+ },
185
+ {
186
+ "id": "case.demographic.gender"
187
+ },
188
+ {
189
+ "id": "case.project.project_id"
190
+ },
191
+ {
192
+ "id": "case.tissue_source_site.name"
193
+ }
194
+ ]
195
+ }
196
+ ]
197
+ }
198
+ ]
199
+ }
200
+ }
201
+ },
202
+ "testSpec": {
203
+ "expected": {
204
+ "rect": 5
205
+ }
206
+ }
207
+ }
208
+ ]
209
+ }
@@ -124,7 +124,6 @@
124
124
  "type": "card",
125
125
  "name": "BCF",
126
126
  "section": "tracks",
127
- "ribbon": {"text": "new", "expireDate": "2024-05-15"},
128
127
  "description": "Custom variant calls",
129
128
  "image": "https://proteinpaint.stjude.org/ppdemo/images/bcf-square.png",
130
129
  "sandboxJson": "BCF",
@@ -210,7 +209,6 @@
210
209
  "type": "card",
211
210
  "name": "Linkage Disequilibrium",
212
211
  "section": "tracks",
213
- "ribbon": {"text": "new", "expireDate": "2024-03-01"},
214
212
  "description": "Non-random association of alleles at different loci",
215
213
  "image": "https://proteinpaint.stjude.org/ppdemo/images/ld-square.png",
216
214
  "sandboxJson": "LD",
@@ -312,6 +310,7 @@
312
310
  "description": "2D scatter plot of samples & metadata",
313
311
  "image": "https://proteinpaint.stjude.org/ppdemo/images/scatterplot-square.png",
314
312
  "sandboxJson": "scatterplot",
313
+ "ribbon": { "text": "updated", "expireDate": "2024-09-01" },
315
314
  "searchterms": ["tSNE", "lasso"]
316
315
  },
317
316
  {
@@ -340,9 +339,29 @@
340
339
  "section": "apps",
341
340
  "description": "Circos-like plot of genome-wide mutational events",
342
341
  "image": "https://proteinpaint.stjude.org/ppdemo/images/disco-square.png",
343
- "ribbon": { "text":"new", "expireDate": "2023-10-31" },
344
342
  "sandboxJson": "disco",
343
+ "ribbon": { "text":"updated", "expireDate": "2024-09-01" },
345
344
  "searchterms": ["disco"]
345
+ },
346
+ {
347
+ "type": "card",
348
+ "name": "Data Matrix",
349
+ "section": "apps",
350
+ "description": "Variable-by-sample map of mutations and metadata",
351
+ "image": "https://proteinpaint.stjude.org/ppdemo/images/matrix-square.png",
352
+ "ribbon": { "text":"new", "expireDate": "2024-09-01" },
353
+ "sandboxJson": "dataMatrix",
354
+ "searchterms": ["matrix"]
355
+ },
356
+ {
357
+ "type": "card",
358
+ "name": "Gene Expression Clustering",
359
+ "section": "apps",
360
+ "description": "Hierarchial clustering of genes and samples",
361
+ "image": "https://proteinpaint.stjude.org/ppdemo/images/geneExpression-square.png",
362
+ "ribbon": { "text":"new", "expireDate": "2024-09-01" },
363
+ "sandboxJson": "geneExp",
364
+ "searchterms": ["clustering","expression","hierarchical"]
346
365
  }
347
366
  ]
348
367
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "button": {
3
3
  "name": "NCI GDC",
4
- "intro": "The NCI's Genomic Data Commmons <a href='https://gdc.cancer.gov/about-gdc' target='GDC homepage'>(GDC)</a> is a repository of harmonized datasets of large cancer cohorts. Following applications allow to access and visualize GDC datasets via on-the-fly query to the GDC API.<br><p style='margin: 10px 20px 0px;'><ul style='margin: 5px 15px;'><li><a href='/?appcard=gdcbam' target='GDC lollipop'>BAM slicing</a></li><li><a href='/?appcard=lollipop' target='GDC lollipop'>Coding mutation lollipop plot</a> (or use gene search box below)</li><li><a href='/?appcard=singlecell' target='GDC lollipop'>Single cell RNA-seq</a></li></ul></p>",
4
+ "intro": "The NCI's Genomic Data Commmons <a href='https://gdc.cancer.gov/about-gdc' target='GDC homepage'>(GDC)</a> is a repository of harmonized datasets of large cancer cohorts. Following applications allow to access and visualize GDC datasets via on-the-fly query to the GDC API.<br><p style='margin: 10px 20px 0px;'><ul style='margin: 5px 15px;'><li><a href='/?appcard=gdcbam' target='GDC lollipop'>BAM slicing</a></li><li><a href='/?appcard=lollipop' target='GDC lollipop'>Coding mutation lollipop plot</a> (or use gene search box below)</li><li><a href='/?appcard=singlecell' target='GDC lollipop'>Single cell RNA-seq</a></li><li><a href='/?appcard=disco' target='GDC disco'>Disco plot</a></li><li><a href='/?appcard=dataMatrix' target='GDC oncomatrix'>Oncomatrix</a></li></ul></p>",
5
5
  "searchBar": "gene",
6
6
  "availableGenomes": ["hg38"],
7
7
  "dsURLparam": "mds3=GDC",
@@ -1,16 +1,20 @@
1
1
  {
2
- "ribbonMessage": "See the improved scatter plot! The new scatter plot contains features like grouping samples, exporting the image, plot configuration options, and more!",
2
+ "ribbonMessage": "Please see our newest examples below: Continuous Variables and 3D PCA.",
3
3
  "ppcalls": [
4
4
  {
5
+ "label": "Tumor Methylome tSNE",
5
6
  "message": "<ul style='line-height:1.5;'><li><strong>Change the plot configuration</strong>: click on the burger button (three stacked lines) in the top left of the plot. The menu provides options to change the term, dot sizes, etc.</li><li><strong>Create groups</strong>: click on the paint brush, lasso the samples of interest, and use the pop-up menu for next steps.</li><li>Open other plots and analysis tools by clicking on the grey buttons above the scatter plot.</li></ul> ",
6
7
  "runargs": {
7
8
  "noheader": true,
8
- "mass":{
9
+ "mass": {
9
10
  "state": {
10
11
  "vocab": {
11
12
  "dslabel": "PNET",
12
13
  "genome": "hg19"
13
14
  },
15
+ "nav": {
16
+ "header_mode": "hidden"
17
+ },
14
18
  "plots": [
15
19
  {
16
20
  "chartType": "sampleScatter",
@@ -24,8 +28,153 @@
24
28
  }
25
29
  },
26
30
  "testSpec": {
27
- "expected": { "rect": 1, "svg": 1 }
31
+ "expected": {
32
+ "rect": 1,
33
+ "svg": 1
34
+ }
35
+ },
36
+ "data_source": 1006
37
+ },
38
+ {
39
+ "label": "Age and Heart",
40
+ "runargs": {
41
+ "noheader": true,
42
+ "mass": {
43
+ "state": {
44
+ "vocab": {
45
+ "dslabel": "SJLife",
46
+ "genome": "hg38"
47
+ },
48
+ "nav": {
49
+ "header_mode": "hidden"
50
+ },
51
+ "plots": [
52
+ {
53
+ "chartType": "summary",
54
+ "childType": "sampleScatter",
55
+ "settings": {
56
+ "sampleScatter": {
57
+ "regression": "Lowess"
58
+ }
59
+ },
60
+ "term": {
61
+ "id": "agebaseline",
62
+ "q": {
63
+ "mode": "continuous"
64
+ }
65
+ },
66
+ "term2": {
67
+ "id": "LV_Ejection_Fraction_3D",
68
+ "q": {
69
+ "mode": "continuous"
70
+ }
71
+ }
72
+ }
73
+ ]
74
+ }
75
+ }
76
+ },
77
+ "testSpec": {
78
+ "expected": {
79
+ "rect": 1,
80
+ "svg": 1
81
+ }
82
+ },
83
+ "data_source": 1005
84
+ },
85
+ {
86
+ "label": "3D PCA",
87
+ "runargs": {
88
+ "noheader": true,
89
+ "mass": {
90
+ "state": {
91
+ "dslabel": "SJLife",
92
+ "genome": "hg38",
93
+ "nav": {
94
+ "header_mode": "hidden"
95
+ },
96
+ "plots": [
97
+ {
98
+ "chartType": "summary",
99
+ "term": {
100
+ "id": "eur_sjlife_pc1",
101
+ "q": {
102
+ "mode": "continuous"
103
+ }
104
+ },
105
+ "term2": {
106
+ "id": "eur_sjlife_pc2",
107
+ "q": {
108
+ "mode": "continuous"
109
+ }
110
+ },
111
+ "term0": {
112
+ "id": "eur_sjlife_pc3",
113
+ "q": {
114
+ "mode": "continuous"
115
+ }
116
+ }
117
+ }
118
+ ]
119
+ }
120
+ }
121
+ },
122
+ "data_source": 1005
123
+ },
124
+ {
125
+ "label": "GDC Gene Expression",
126
+ "runargs": {
127
+ "noheader": true,
128
+ "mass": {
129
+ "state": {
130
+ "vocab": {
131
+ "dslabel": "GDC",
132
+ "genome": "hg38"
133
+ },
134
+ "nav": {
135
+ "header_mode": "hidden"
136
+ },
137
+ "termfilter": {
138
+ "filter0": {
139
+ "op": "in",
140
+ "content": {
141
+ "field": "cases.disease_type",
142
+ "value": "Gliomas"
143
+ }
144
+ }
145
+ },
146
+ "plots": [
147
+ {
148
+ "chartType": "summary",
149
+ "term": {
150
+ "term": {
151
+ "type": "geneExpression",
152
+ "gene": "IDH1"
153
+ },
154
+ "q": {
155
+ "mode": "continuous"
156
+ }
157
+ },
158
+ "term2": {
159
+ "term": {
160
+ "type": "geneExpression",
161
+ "gene": "EGFR"
162
+ },
163
+ "q": {
164
+ "mode": "continuous"
165
+ }
166
+ }
167
+ }
168
+ ]
169
+ }
170
+ }
28
171
  }
29
172
  }
173
+ ],
174
+ "buttons": [
175
+ {
176
+ "name": "Documentation",
177
+ "link": "https://github.com/stjude/proteinpaint/wiki/Scatter-plot"
178
+ }
30
179
  ]
31
180
  }
@@ -1,6 +1,7 @@
1
1
  {
2
+ "ribbonMessage": "We're excited to present our reenvisioned single cell plot. Please see the example below.",
2
3
  "ppcalls": [
3
- {
4
+ {
4
5
  "label": "GDC datasets",
5
6
  "urlparam": "?noheader=1&mass={%22genome%22:%22hg38%22,%22dslabel%22:%22GDC%22,%22nav%22:{%22header_mode%22:%22hidden%22},%22plots%22:[{%22chartType%22:%22singleCellPlot%22}]}",
6
7
  "runargs": {
@@ -21,7 +22,12 @@
21
22
  }
22
23
  }
23
24
  },
24
- "testSpec": { "expected": { "table": 1, "svg": 2 } }
25
+ "testSpec": {
26
+ "expected": {
27
+ "table": 1,
28
+ "svg": 2
29
+ }
30
+ }
25
31
  }
26
32
  ]
27
33
  }