@datagrok/bio 1.7.5 → 1.7.6

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.
@@ -0,0 +1,78 @@
1
+ cereal_name,Calories,Carbohydrates,Fat,Fiber,Potassium,Protein,Sodium,Sugar,Vitamins/Minerals
2
+ Mueslix_Crispy_Blend,160,17,2,3,160,3,150,13,25
3
+ "Muesli_Raisins,_Dates,_&_Almonds",150,16,3,3,170,4,95,11,25
4
+ "Muesli_Raisins,_Peaches,_&_Pecans",150,16,3,3,170,4,150,11,25
5
+ Just_Right_Fruit_&_Nut,140,20,1,2,95,3,170,9,100
6
+ Nutri-Grain_Almond-Raisin,140,21,2,3,130,3,220,7,25
7
+ Total_Raisin_Bran,140,15,1,4,230,3,190,14,100
8
+ Basic_4,130,18,2,2,100,3,210,8,25
9
+ Oatmeal_Raisin_Crisp,130,null,2,null,120,3,170,10,25
10
+ 100%_Natural_Bran,120,8,5,2,135,3,15,8,0
11
+ Cap'n'Crunch,120,12,2,0,35,1,220,12,25
12
+ Cinnamon_Toast_Crunch,120,13,3,0,45,1,210,9,25
13
+ "Fruit_&_Fibre_Dates,_Walnuts,_and_Oats",120,12,2,5,200,3,160,10,25
14
+ Fruitful_Bran,120,14,0,5,190,3,240,12,25
15
+ Great_Grains_Pecan,120,13,3,3,100,3,75,4,25
16
+ Honey_Graham_Ohs,120,12,2,1,45,1,220,11,25
17
+ Nut&Honey_Crunch,120,15,1,0,40,2,190,9,25
18
+ Post_Nat._Raisin_Bran,120,11,1,6,260,3,200,14,25
19
+ Raisin_Bran,120,14,1,5,240,3,210,12,25
20
+ Almond_Delight,110,14,2,1,-1,2,200,8,25
21
+ Apple_Cinnamon_Cheerios,110,null,2,null,70,2,180,10,25
22
+ Apple_Jacks,110,11,0,1,30,2,125,14,25
23
+ Cheerios,110,17,2,2,105,6,290,1,25
24
+ Clusters,110,13,2,2,105,3,140,7,25
25
+ Cocoa_Puffs,110,12,1,0,55,1,180,13,25
26
+ Corn_Chex,110,22,0,0,25,2,280,3,25
27
+ Corn_Pops,110,13,0,1,20,1,90,12,25
28
+ Count_Chocula,110,12,1,0,65,1,180,13,25
29
+ Cracklin'_Oat_Bran,110,10,3,4,160,3,140,7,25
30
+ Crispix,110,21,0,1,30,2,220,3,25
31
+ Froot_Loops,110,11,1,1,30,2,125,13,25
32
+ Frosted_Flakes,110,14,0,1,25,1,200,11,25
33
+ Fruity_Pebbles,110,13,1,0,25,1,135,12,25
34
+ Golden_Grahams,110,15,1,0,45,1,280,9,25
35
+ Grape-Nuts,110,17,0,3,90,3,170,3,25
36
+ Honey-comb,110,14,0,0,35,1,180,11,25
37
+ Honey_Nut_Cheerios,110,null,1,null,90,3,250,10,25
38
+ Just_Right_Crunchy__Nuggets,110,17,1,1,60,2,170,6,100
39
+ Kix,110,21,1,0,40,2,260,3,25
40
+ Lucky_Charms,110,12,1,0,55,2,180,12,25
41
+ Rice_Chex,110,23,0,0,30,1,240,2,25
42
+ Rice_Krispies,110,22,0,0,35,2,290,3,25
43
+ Smacks,110,9,1,1,40,2,70,15,25
44
+ Special_K,110,16,0,1,55,6,230,3,25
45
+ Total_Corn_Flakes,110,21,1,0,35,2,200,3,100
46
+ Triples,110,21,1,0,60,2,250,3,25
47
+ Trix,110,13,1,0,25,1,140,12,25
48
+ Wheaties_Honey_Gold,110,16,1,1,60,2,200,8,25
49
+ Corn_Flakes,100,21,0,1,35,2,290,2,25
50
+ Cream_of_Wheat_(Quick),100,21,0,1,-1,3,80,0,0
51
+ Crispy_Wheat_&_Raisins,100,11,1,2,120,2,140,10,25
52
+ Double_Chex,100,18,0,1,80,2,190,5,25
53
+ Frosted_Mini-Wheats,100,14,0,3,100,3,0,7,25
54
+ Golden_Crisp,100,11,0,0,40,2,45,15,25
55
+ Grape_Nuts_Flakes,100,15,1,3,85,3,140,5,25
56
+ Life,100,12,2,2,95,4,150,6,25
57
+ Maypo,100,16,1,0,95,4,0,3,25
58
+ Multi-Grain_Cheerios,100,15,1,2,90,2,220,6,25
59
+ Product_19,100,20,0,1,45,3,320,3,100
60
+ Quaker_Oat_Squares,100,14,1,2,110,4,135,6,25
61
+ Quaker_Oatmeal,100,-1,2,null,110,5,0,-1,0
62
+ Raisin_Nut_Bran,100,null,2,null,140,3,140,8,25
63
+ Total_Whole_Grain,100,16,1,3,110,3,200,3,100
64
+ Wheat_Chex,100,17,1,3,115,3,230,3,25
65
+ Wheaties,100,17,1,3,110,3,200,3,25
66
+ Bran_Chex,90,15,1,4,125,2,200,6,25
67
+ Bran_Flakes,90,13,0,5,190,3,210,5,25
68
+ Nutri-grain_Wheat,90,18,0,3,90,3,170,2,25
69
+ Raisin_Squares,90,15,0,2,110,2,0,6,25
70
+ Shredded_Wheat_'n'Bran,90,19,0,4,140,3,0,0,0
71
+ Shredded_Wheat_spoon_size,90,20,0,3,120,3,0,0,0
72
+ Strawberry_Fruit_Wheats,90,15,0,3,90,2,15,5,25
73
+ Shredded_Wheat,80,16,0,3,95,2,0,0,0
74
+ 100%_Bran,70,5,1,10,280,4,130,6,25
75
+ All-Bran,70,7,1,9,320,4,260,5,25
76
+ All-Bran_with_Extra_Fiber,50,8,0,14,330,4,140,0,25
77
+ Puffed_Rice,50,13,0,0,15,1,0,0,0
78
+ Puffed_Wheat,50,10,0,1,50,2,0,0,0
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@datagrok/bio",
3
3
  "beta": false,
4
4
  "friendlyName": "Bio",
5
- "version": "1.7.5",
5
+ "version": "1.7.6",
6
6
  "description": "Bio is a [package](https://datagrok.ai/help/develop/develop#packages) for the [Datagrok](https://datagrok.ai) platform",
7
7
  "repository": {
8
8
  "type": "git",
@@ -16,15 +16,30 @@ beforeAll(async () => {
16
16
  }, P_START_TIMEOUT);
17
17
 
18
18
  afterAll(async () => {
19
- await browser.close();
19
+ await browser?.close();
20
+ });
21
+
22
+ expect.extend({
23
+ checkOutput(received, expected, context) {
24
+ if (received === expected) {
25
+ return {
26
+ message: () => context,
27
+ pass: true
28
+ };
29
+ } else {
30
+ return {
31
+ message: () => context,
32
+ pass: false
33
+ };
34
+ }
35
+ }
20
36
  });
21
37
 
22
38
  it('TEST', async () => {
23
- const targetPackage: string = process.env.TARGET_PACKAGE ?? 'Bio';
39
+ const targetPackage:string = process.env.TARGET_PACKAGE ?? 'Bio';
24
40
  console.log(`Testing ${targetPackage} package`);
25
41
 
26
- //console.log(require('root-require')('package.json').version);
27
- const r = await page.evaluate((targetPackage): Promise<object> => {
42
+ const r = await page.evaluate((targetPackage):Promise<object> => {
28
43
  return new Promise<object>((resolve, reject) => {
29
44
  (<any>window).grok.functions.eval(targetPackage + ':test()').then((df: any) => {
30
45
  const cStatus = df.columns.byName('success');
@@ -32,23 +47,22 @@ it('TEST', async () => {
32
47
  const cCat = df.columns.byName('category');
33
48
  const cName = df.columns.byName('name');
34
49
  let failed = false;
35
- let report = '';
50
+ let passReport = '';
51
+ let failReport = '';
36
52
  for (let i = 0; i < df.rowCount; i++) {
37
- if (!cStatus.get(i)) {
38
- report += `${cCat.get(i)}.${cName.get(i)}: ${cMessage.get(i)}\n`;
53
+ if (cStatus.get(i)) {
54
+ passReport += `Test result : ${targetPackage}.${cCat.get(i)}.${cName.get(i)} : ${cMessage.get(i)}\n`;
55
+ } else {
39
56
  failed = true;
57
+ failReport += `Test result : ${targetPackage}.${cCat.get(i)}.${cName.get(i)} : ${cMessage.get(i)}\n`;
40
58
  }
41
59
  }
42
- resolve({report, failed});
60
+ resolve({failReport, passReport, failed});
43
61
  }).catch((e: any) => reject(e));
44
62
  });
45
63
  }, targetPackage);
46
64
  // @ts-ignore
47
- console.log(r.report);
65
+ console.log(r.passReport);
48
66
  // @ts-ignore
49
- expect(r.failed).toBe(false);
67
+ expect(r.failed).checkOutput(false, r.failReport);
50
68
  }, 100000);
51
-
52
- // it('WebLogo.getAlphabetSimilarity', () => {
53
- //
54
- // });
package/src/const.ts CHANGED
@@ -3,23 +3,23 @@ import * as grok from 'datagrok-api/grok';
3
3
  import * as DG from 'datagrok-api/dg';
4
4
 
5
5
  export const jsonSdfMonomerLibDict = {
6
- "monomerType": null,
7
- "smiles": null,
8
- "name": "MonomerName",
9
- "author": null,
10
- "molfile": "molecule",
11
- "naturalAnalog": "MonomerNaturalAnalogCode",
12
- "rgroups": "MonomerCaps",
13
- "createDate": null,
14
- "id": null,
15
- "polymerType": "MonomerType",
16
- "symbol": "MonomerCode"
17
- }
6
+ 'monomerType': null,
7
+ 'smiles': null,
8
+ 'name': 'MonomerName',
9
+ 'author': null,
10
+ 'molfile': 'molecule',
11
+ 'naturalAnalog': 'MonomerNaturalAnalogCode',
12
+ 'rgroups': 'MonomerCaps',
13
+ 'createDate': null,
14
+ 'id': null,
15
+ 'polymerType': 'MonomerType',
16
+ 'symbol': 'MonomerCode'
17
+ };
18
18
 
19
- export const RGROUP_FIELD = "rgroups";
20
- export const CAP_GROUP_SMILES = "capGroupSmiles";
21
- export const RGROUP_ALTER_ID = "alternateId";
22
- export const CAP_GROUP_NAME = "capGroupName";
23
- export const RGROUP_LABEL = "label";
24
- export const MONOMER_SYMBOL = "symbol";
25
- export const SDF_MONOMER_NAME = "MonomerName";
19
+ export const RGROUP_FIELD = 'rgroups';
20
+ export const CAP_GROUP_SMILES = 'capGroupSmiles';
21
+ export const RGROUP_ALTER_ID = 'alternateId';
22
+ export const CAP_GROUP_NAME = 'capGroupName';
23
+ export const RGROUP_LABEL = 'label';
24
+ export const MONOMER_SYMBOL = 'symbol';
25
+ export const SDF_MONOMER_NAME = 'MonomerName';
package/src/package.ts CHANGED
@@ -252,7 +252,7 @@ export async function compositionAnalysis(): Promise<void> {
252
252
  //name: sdfToJsonLib
253
253
  //input: dataframe table
254
254
  export async function sdfToJsonLib(table: DG.DataFrame) {
255
- const jsonMonomerLibrary = createJsonMonomerLibFromSdf(table);
255
+ const jsonMonomerLibrary = createJsonMonomerLibFromSdf(table);
256
256
  }
257
257
 
258
258
  // helper function for importFasta
@@ -83,7 +83,7 @@ MKP---SEYV
83
83
 
84
84
  separatorGaps: `seq
85
85
  F/W//P/H//E/Y
86
- //Y/N/R/Q/W/Y/V//
86
+ /Y/N/R/Q/W/Y/V/
87
87
  M/K/P////S/E/Y/V
88
88
  `,
89
89
 
@@ -133,6 +133,7 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
133
133
  }
134
134
 
135
135
  // FASTA tests
136
+ // fasta -> separator
136
137
  test('testFastaPtToSeparator', async () => {
137
138
  await _testConvert(Samples.fastaPt, converter(NOTATION.SEPARATOR, '-'), Samples.separatorPt);
138
139
  });
@@ -142,7 +143,11 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
142
143
  test('testFastaRnaToSeparator', async () => {
143
144
  await _testConvert(Samples.fastaRna, converter(NOTATION.SEPARATOR, '*'), Samples.separatorRna);
144
145
  });
146
+ test('testFastaGapsToSeparator', async () => {
147
+ await _testConvert(Samples.fastaGaps, converter(NOTATION.SEPARATOR, '/'), Samples.separatorGaps);
148
+ });
145
149
 
150
+ // fasta -> helm
146
151
  test('testFastaPtToHelm', async () => {
147
152
  await _testConvert(Samples.fastaPt, converter(NOTATION.HELM), Samples.helmPt);
148
153
  });
@@ -152,16 +157,13 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
152
157
  test('testFastaRnaToHelm', async () => {
153
158
  await _testConvert(Samples.fastaRna, converter(NOTATION.HELM), Samples.helmRna);
154
159
  });
155
-
156
- test('testFastaGapsToSeparator', async () => {
157
- await _testConvert(Samples.fastaGaps, converter(NOTATION.SEPARATOR, '/'), Samples.separatorGaps);
158
- });
159
160
  test('testFastaGapsToHelm', async () => {
160
- await _testConvert(Samples.fastaGaps, converter(NOTATION.SEPARATOR), Samples.helmGaps);
161
+ await _testConvert(Samples.fastaGaps, converter(NOTATION.HELM), Samples.helmGaps);
161
162
  });
162
163
 
163
164
 
164
165
  // SEPARATOR tests
166
+ // separator -> fasta
165
167
  test('testSeparatorPtToFasta', async () => {
166
168
  await _testConvert(Samples.separatorPt, converter(NOTATION.FASTA), Samples.fastaPt);
167
169
  });
@@ -171,7 +173,11 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
171
173
  test('testSeparatorRnaToFasta', async () => {
172
174
  await _testConvert(Samples.separatorRna, converter(NOTATION.FASTA), Samples.fastaRna);
173
175
  });
176
+ test('testSeparatorGapsToFasta', async () => {
177
+ await _testConvert(Samples.separatorGaps, converter(NOTATION.FASTA), Samples.fastaGaps);
178
+ });
174
179
 
180
+ // separator -> helm
175
181
  test('testSeparatorPtToHelm', async () => {
176
182
  await _testConvert(Samples.separatorPt, converter(NOTATION.HELM), Samples.helmPt);
177
183
  });
@@ -181,13 +187,31 @@ PEPTIDE1{M.K.P.*.*.*.S.E.Y.V}$$$
181
187
  test('testSeparatorRnaToHelm', async () => {
182
188
  await _testConvert(Samples.separatorRna, converter(NOTATION.HELM), Samples.helmRna);
183
189
  });
184
- test('testSeparatorGapsToFasta', async () => {
185
- await _testConvert(Samples.separatorGaps, converter(NOTATION.FASTA), Samples.fastaGaps);
186
- });
187
190
  test('testSeparatorGapsToHelm', async () => {
188
191
  await _testConvert(Samples.separatorGaps, converter(NOTATION.HELM), Samples.helmGaps);
189
192
  });
190
193
 
191
194
 
192
- // HELM tests: TODO
195
+ // HELM tests
196
+ // helm -> fasta
197
+ test('HelmDnaToFasta', async () => {
198
+ await _testConvert(Samples.helmDna, converter(NOTATION.FASTA), Samples.fastaDna);
199
+ });
200
+ test('HelmRnaToFasta', async () => {
201
+ await _testConvert(Samples.helmRna, converter(NOTATION.FASTA), Samples.fastaRna);
202
+ });
203
+ test('HelmPtToFasta', async () => {
204
+ await _testConvert(Samples.helmPt, converter(NOTATION.FASTA), Samples.fastaPt);
205
+ });
206
+
207
+ // helm -> separator
208
+ test('HelmDnaToSeparator', async () => {
209
+ await _testConvert(Samples.helmDna, converter(NOTATION.SEPARATOR), Samples.separatorDna);
210
+ });
211
+ test('HelmRnaToSeparator', async () => {
212
+ await _testConvert(Samples.helmRna, converter(NOTATION.SEPARATOR, '*'), Samples.separatorRna);
213
+ });
214
+ test('HelmPtToSeparator', async () => {
215
+ await _testConvert(Samples.helmPt, converter(NOTATION.SEPARATOR, '-'), Samples.separatorPt);
216
+ });
193
217
  });
@@ -113,6 +113,7 @@ MWRSWY-CKHP
113
113
  testIdCsv = 'testIdCsv',
114
114
  testSmilesCsv = 'testSmilesCsv',
115
115
  testSmiles2Csv = 'testSmiles2Csv',
116
+ testCerealCsv = 'testCerealCsv',
116
117
  }
117
118
 
118
119
  const samples: { [key: string]: string } = {
@@ -128,6 +129,7 @@ MWRSWY-CKHP
128
129
  'testIdCsv': 'System:AppData/Bio/tests/testId.csv',
129
130
  'testSmilesCsv': 'System:AppData/Bio/tests/testSmiles.csv',
130
131
  'testSmiles2Csv': 'System:AppData/Bio/tests/testSmiles2.csv',
132
+ 'testCerealCsv': 'System:AppData/Bio/tests/testCereal.csv',
131
133
  };
132
134
 
133
135
  const _samplesDfs: { [key: string]: Promise<DG.DataFrame> } = {};
@@ -306,6 +308,10 @@ MWRSWY-CKHP
306
308
  test('samplesFastaPtPosSequence', async () => {
307
309
  await (_testPos(readSamples(Samples.fastaPtCsv), 'sequence', 'fasta:SEQ:PT'));
308
310
  });
311
+
312
+ test('samplesTestCerealNegativeCerealName', async () => {
313
+ await (_testNeg(readSamples(Samples.testCerealCsv), 'cereal_name'));
314
+ });
309
315
  });
310
316
 
311
317
  export async function _testNeg(readDf: DfReaderFunc, colName: string) {
@@ -219,7 +219,6 @@ export class MacromoleculeSequenceCellRenderer extends DG.GridCellRenderer {
219
219
 
220
220
  g.restore();
221
221
  return;
222
-
223
222
  }
224
223
  }
225
224
  }
@@ -46,14 +46,16 @@ export function convert(col: DG.Column): void {
46
46
  .show();
47
47
 
48
48
  convertDialogSubs.push(convertDialog.onClose.subscribe((value) => {
49
- convertDialogSubs.forEach((s) => {s.unsubscribe(); });
49
+ convertDialogSubs.forEach((s) => { s.unsubscribe(); });
50
50
  convertDialogSubs = [];
51
51
  convertDialog = null;
52
52
  }));
53
53
  }
54
54
  }
55
55
 
56
- export async function convertDo(srcCol: DG.Column, targetNotation: NOTATION, separator: string | null): Promise<DG.Column> {
56
+ export async function convertDo(
57
+ srcCol: DG.Column, targetNotation: NOTATION, separator: string | null
58
+ ): Promise<DG.Column> {
57
59
  const converter = new NotationConverter(srcCol);
58
60
  const newColumn = converter.convert(targetNotation, separator);
59
61
  srcCol.dataFrame.columns.add(newColumn);
@@ -1,4 +1,4 @@
1
- <html><head><meta charset="utf-8"/><title>Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit 0507068d.</title><style type="text/css">html,
1
+ <html><head><meta charset="utf-8"/><title>Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit c46c3f48.</title><style type="text/css">html,
2
2
  body {
3
3
  font-family: Arial, Helvetica, sans-serif;
4
4
  font-size: 1rem;
@@ -229,9 +229,9 @@ header {
229
229
  font-size: 1rem;
230
230
  padding: 0 0.5rem;
231
231
  }
232
- </style></head><body><div id="jesthtml-content"><header><h1 id="title">Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit 0507068d.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-07-14 14:09:37</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts</div><div class="suite-time warn">110.386s</div></div><div class="suite-tests"><div class="test-result failed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">failed</div><div class="test-duration">100.001s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: thrown: "Exceeded timeout of 100000 ms for a test.
232
+ </style></head><body><div id="jesthtml-content"><header><h1 id="title">Bio Test Report. Datagrok version datagrok/datagrok:latest SHA=34f75e5127b8. Commit c46c3f48.</h1></header><div id="metadata-container"><div id="timestamp">Started: 2022-07-15 08:43:03</div><div id="summary"><div id="suite-summary"><div class="summary-total">Suites (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div><div id="test-summary"><div class="summary-total">Tests (1)</div><div class="summary-passed summary-empty">0 passed</div><div class="summary-failed">1 failed</div><div class="summary-pending summary-empty">0 pending</div></div></div></div><div id="suite-1" class="suite-container"><div class="suite-info"><div class="suite-path">/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts</div><div class="suite-time warn">110.047s</div></div><div class="suite-tests"><div class="test-result failed"><div class="test-info"><div class="test-suitename"> </div><div class="test-title">TEST</div><div class="test-status">failed</div><div class="test-duration">100.001s</div></div><div class="failureMessages"> <pre class="failureMsg">Error: thrown: "Exceeded timeout of 100000 ms for a test.
233
233
  Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."
234
- at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:22:1)
234
+ at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:38:1)
235
235
  at Runtime._execModule (/home/runner/work/public/public/packages/Bio/node_modules/jest-runtime/build/index.js:1646:24)
236
236
  at Runtime._loadModule (/home/runner/work/public/public/packages/Bio/node_modules/jest-runtime/build/index.js:1185:12)
237
237
  at Runtime.requireModule (/home/runner/work/public/public/packages/Bio/node_modules/jest-runtime/build/index.js:1009:12)
@@ -246,11 +246,11 @@ Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long
246
246
  at Object.run (/home/runner/work/public/public/packages/Bio/node_modules/jest-cli/build/cli/index.js:155:37)</pre></div></div></div><div class="suite-consolelog"><div class="suite-consolelog-header">Console Log</div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Bio/src/__jest__/test-node.ts:63:11)
247
247
  at Generator.next (&lt;anonymous&gt;)
248
248
  at fulfilled (/home/runner/work/public/public/packages/Bio/src/__jest__/test-node.ts:28:58)
249
- at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Using web root: http://localhost:8080</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:24:11
249
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)</pre><pre class="suite-consolelog-item-message">Using web root: http://localhost:8080</pre></div><div class="suite-consolelog-item"><pre class="suite-consolelog-item-origin"> at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:40:11
250
250
  at Generator.next (&lt;anonymous&gt;)
251
251
  at /home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:34:71
252
252
  at new Promise (&lt;anonymous&gt;)
253
253
  at Object.&lt;anonymous&gt;.__awaiter (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:30:12)
254
- at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:22:23)
254
+ at Object.&lt;anonymous&gt; (/home/runner/work/public/public/packages/Bio/src/__jest__/remote.test.ts:38:23)
255
255
  at Promise.then.completed (/home/runner/work/public/public/packages/Bio/node_modules/jest-circus/build/utils.js:391:28)
256
256
  at new Promise (&lt;anonymous&gt;)</pre><pre class="suite-consolelog-item-message">Testing Bio package</pre></div></div></div></div></body></html>