@@ -494,6 +494,14 @@ describe('text selector', () => {
494
494
expect ( await page . $eval ( `text="` , e => e . outerHTML ) ) . toBe ( '<div> " </div>' ) ;
495
495
expect ( await page . $eval ( `text='` , e => e . outerHTML ) ) . toBe ( '<div> \' </div>' ) ;
496
496
497
+ await page . setContent ( `<div>Hi''>>foo=bar</div>` ) ;
498
+ expect ( await page . $eval ( `text="Hi''>>foo=bar"` , e => e . outerHTML ) ) . toBe ( `<div>Hi''>>foo=bar</div>` ) ;
499
+ await page . setContent ( `<div>Hi'">>foo=bar</div>` ) ;
500
+ expect ( await page . $eval ( `text="Hi'\\">>foo=bar"` , e => e . outerHTML ) ) . toBe ( `<div>Hi'">>foo=bar</div>` ) ;
501
+
502
+ await page . setContent ( `<div>Hi>><span></span></div>` ) ;
503
+ expect ( await page . $eval ( `text="Hi>>">>span` , e => e . outerHTML ) ) . toBe ( `<span></span>` ) ;
504
+
497
505
await page . setContent ( `<div>a<br>b</div><div>a</div>` ) ;
498
506
expect ( await page . $eval ( `text=a` , e => e . outerHTML ) ) . toBe ( '<div>a<br>b</div>' ) ;
499
507
expect ( await page . $eval ( `text=b` , e => e . outerHTML ) ) . toBe ( '<div>a<br>b</div>' ) ;
@@ -622,6 +630,30 @@ describe('css selector', () => {
622
630
expect ( await page . $eval ( `css=[attr='hello,world!']` , e => e . outerHTML ) ) . toBe ( '<div attr="hello,world!"></div>' ) ;
623
631
expect ( await page . $eval ( `css=div[attr="hello,world!"],span` , e => e . outerHTML ) ) . toBe ( '<span></span>' ) ;
624
632
} ) ;
633
+
634
+ it ( 'should work with attribute selectors' , async ( { page} ) => {
635
+ await page . setContent ( `<div attr="hello world" attr2="hello-''>>foo=bar[]" attr3="] span"><span></span></div>` ) ;
636
+ await page . evaluate ( ( ) => window . div = document . querySelector ( 'div' ) ) ;
637
+ const selectors = [
638
+ `[attr="hello world"]` ,
639
+ `[attr = "hello world"]` ,
640
+ `[attr ~= world]` ,
641
+ `[attr ^=hello ]` ,
642
+ `[attr $= world ]` ,
643
+ `[attr *= "llo wor" ]` ,
644
+ `[attr2 |= hello]` ,
645
+ `[attr = "Hello World" i ]` ,
646
+ `[attr *= "llo WOR"i]` ,
647
+ `[attr $= woRLD i]` ,
648
+ `[attr2 = "hello-''>>foo=bar[]"]` ,
649
+ `[attr2 $="foo=bar[]"]` ,
650
+ ] ;
651
+ for ( const selector of selectors )
652
+ expect ( await page . $eval ( selector , e => e === div ) ) . toBe ( true ) ;
653
+ expect ( await page . $eval ( `[attr*=hello] span` , e => e . parentNode === div ) ) . toBe ( true ) ;
654
+ expect ( await page . $eval ( `[attr*=hello] >> span` , e => e . parentNode === div ) ) . toBe ( true ) ;
655
+ expect ( await page . $eval ( `[attr3="] span"] >> span` , e => e . parentNode === div ) ) . toBe ( true ) ;
656
+ } ) ;
625
657
} ) ;
626
658
627
659
describe ( 'attribute selector' , ( ) => {
0 commit comments