@@ -4,8 +4,6 @@ import { createServer, getBaseUrl } from './createServer';
44import { Browser , launch , Page } from 'puppeteer' ;
55import { tableParser , RowValidationPolicy } from '../src' ;
66
7- jest . setTimeout ( 60 * 1000 * 1000 ) ;
8-
97describe ( 'Basic parsing' , ( ) => {
108 let server : Server ;
119 let browser : Browser ;
@@ -14,7 +12,7 @@ describe('Basic parsing', () => {
1412 beforeAll ( async ( ) => {
1513 server = await createServer ( ) ;
1614 browser = await launch ( {
17- headless : 'new' ,
15+ headless : true ,
1816 } ) ;
1917 page = await browser . newPage ( ) ;
2018 } ) ;
@@ -137,8 +135,8 @@ describe('Basic parsing', () => {
137135 ` ) ;
138136 } ) ;
139137
140- it ( 'Throw error with invalid options' , ( ) => {
141- expect (
138+ it ( 'Throw error with invalid options' , async ( ) => {
139+ await expect (
142140 tableParser ( page , {
143141 selector : 'table' ,
144142 asArray : false ,
@@ -150,7 +148,7 @@ describe('Basic parsing', () => {
150148 } ) ,
151149 ) . rejects . toThrowError ( ) ;
152150
153- expect (
151+ await expect (
154152 tableParser ( page , {
155153 selector : 'table' ,
156154 // @ts -expect-error intended
@@ -163,7 +161,7 @@ describe('Basic parsing', () => {
163161 } ) ,
164162 ) . rejects . toThrowError ( ) ;
165163
166- expect (
164+ await expect (
167165 tableParser ( page , {
168166 selector : 'table' ,
169167 rowValuesAsObject : false ,
@@ -176,8 +174,8 @@ describe('Basic parsing', () => {
176174 ) . rejects . toThrowError ( ) ;
177175 } ) ;
178176
179- it ( 'Throw error when specified optional column which does not exists' , ( ) => {
180- expect (
177+ it ( 'Throw error when specified optional column which does not exists' , async ( ) => {
178+ await expect (
181179 tableParser ( page , {
182180 selector : 'table' ,
183181 allowedColNames : {
@@ -553,4 +551,58 @@ describe('Basic parsing', () => {
553551 expect ( data . length ) . toBe ( 1 ) ;
554552 expect ( data [ 0 ] ) . toBe ( 'name,age' ) ;
555553 } ) ;
554+
555+ it ( 'Handles non-text elements' , async ( ) => {
556+ await page . goto ( `${ getBaseUrl ( ) } /3.html` ) ;
557+
558+ const data = await tableParser ( page , {
559+ selector : '#table-overview' ,
560+ asArray : false ,
561+ allowedColNames : {
562+ 'A' : 'A' ,
563+ '' : 'B' ,
564+ 'C' : 'C' ,
565+ } ,
566+ colParser : ( value , x ) => {
567+ console . info ( { value, x } ) ;
568+ return value . trim ( ) ;
569+ } ,
570+ } ) ;
571+
572+ expect ( data ) . toMatchInlineSnapshot ( `
573+ "A;B;C
574+ A1;B1;C1
575+ A1;;C1"
576+ ` ) ;
577+ } ) ;
578+
579+ it ( 'Exclude columns' , async ( ) => {
580+ await page . goto ( `${ getBaseUrl ( ) } /1.html` ) ;
581+
582+ const data = await tableParser ( page , {
583+ selector : 'table' ,
584+ allowedColNames : {
585+ 'Car Name' : 'car' ,
586+ 'Horse Powers' : 'hp' ,
587+ 'Manufacture Year' : 'year' ,
588+ } ,
589+ optionalColNames : [ 'year' ] ,
590+ rowValidationPolicy : RowValidationPolicy . EXACT_MATCH ,
591+ colParser : ( value ) => value . trim ( ) ,
592+ excludedColumns : ( rows , getColumnIndex ) => {
593+ expect ( rows . length ) . toBe ( 4 ) ;
594+ expect ( getColumnIndex ( 'car' ) ) . toBe ( 0 ) ;
595+ expect ( getColumnIndex ( 'hp' ) ) . toBe ( 1 ) ;
596+ expect ( getColumnIndex ( 'year' ) ) . toBe ( 2 ) ;
597+ return [ 'year' ] ;
598+ } ,
599+ } ) ;
600+
601+ expect ( data ) . toMatchInlineSnapshot ( `
602+ "car;hp
603+ Audi S5;332
604+ Alfa Romeo Giulia;500
605+ BMW X3;215
606+ Skoda Octavia;120"` ) ;
607+ } ) ;
556608} ) ;
0 commit comments