Best JavaScript code snippet using playwright-internal
event-selector-test.js
Source: event-selector-test.js
1var tape = require('tape'),2 vega = require('../');3tape('Parser parses event parseSelector strings', t => {4 let events;5 events = vega.parseSelector('rect:mousedown');6 t.equal(events.length, 1);7 t.deepEqual(events[0], {8 source: 'view',9 type: 'mousedown',10 marktype: 'rect'11 });12 events = vega.parseSelector('rect:mousedown, rect:touchstart');13 t.equal(events.length, 2);14 t.deepEqual(events[0], {15 source: 'view',16 type: 'mousedown',17 marktype: 'rect'18 });19 t.deepEqual(events[1], {20 source: 'view',21 type: 'touchstart',22 marktype: 'rect'23 });24 events = vega.parseSelector('rect:mousedown!');25 t.equal(events.length, 1);26 t.deepEqual(events[0], {27 source: 'view',28 type: 'mousedown',29 marktype: 'rect',30 consume: true31 });32 events = vega.parseSelector('@foo:mouseup');33 t.equal(events.length, 1);34 t.deepEqual(events[0], {35 source: 'view',36 type: 'mouseup',37 markname: 'foo'38 });39 events = vega.parseSelector('rect:mousedown{1000}');40 t.equal(events.length, 1);41 t.deepEqual(events[0], {42 source: 'view',43 type: 'mousedown',44 marktype: 'rect',45 throttle: 100046 });47 events = vega.parseSelector('rect:mousedown{100,200}');48 t.equal(events.length, 1);49 t.deepEqual(events[0], {50 source: 'view',51 type: 'mousedown',52 marktype: 'rect',53 throttle: 100,54 debounce: 20055 });56 events = vega.parseSelector('rect:mousedown{0,200}');57 t.equal(events.length, 1);58 t.deepEqual(events[0], {59 source: 'view',60 type: 'mousedown',61 marktype: 'rect',62 debounce: 20063 });64 events = vega.parseSelector('rect:mousedown{,200}');65 t.equal(events.length, 1);66 t.deepEqual(events[0], {67 source: 'view',68 type: 'mousedown',69 marktype: 'rect',70 debounce: 20071 });72 events = vega.parseSelector('rect:mousedown{200,0}');73 t.equal(events.length, 1);74 t.deepEqual(events[0], {75 source: 'view',76 type: 'mousedown',77 marktype: 'rect',78 throttle: 20079 });80 events = vega.parseSelector('rect:mousedown{200,}');81 t.equal(events.length, 1);82 t.deepEqual(events[0], {83 source: 'view',84 type: 'mousedown',85 marktype: 'rect',86 throttle: 20087 });88 events = vega.parseSelector('mousedown[event.x>10][event.metaKey]');89 t.equal(events.length, 1);90 t.deepEqual(events[0], {91 source: 'view',92 type: 'mousedown',93 filter: ['event.x>10', 'event.metaKey']94 });95 events = vega.parseSelector('wheel![event.shiftKey]');96 t.equal(events.length, 1);97 t.deepEqual(events[0], {98 source: 'view',99 type: 'wheel',100 consume: true,101 filter: ['event.shiftKey']102 });103 events = vega.parseSelector('wheel![event.shiftKey]{200}');104 t.equal(events.length, 1);105 t.deepEqual(events[0], {106 source: 'view',107 type: 'wheel',108 consume: true,109 filter: ['event.shiftKey'],110 throttle: 200111 });112 events = vega.parseSelector('path:wheel![event.shiftKey]{200}');113 t.equal(events.length, 1);114 t.deepEqual(events[0], {115 source: 'view',116 type: 'wheel',117 marktype: 'path',118 consume: true,119 filter: ['event.shiftKey'],120 throttle: 200121 });122 events = vega.parseSelector('[mousedown, mouseup] > window:mousemove');123 t.equal(events.length, 1);124 t.deepEqual(events[0], {125 source: 'window',126 type: 'mousemove',127 between: [128 {source: 'view', type: 'mousedown'},129 {source: 'view', type: 'mouseup'}130 ]131 });132 events = vega.parseSelector('[touchstart, touchend] > [mousedown, mouseup] > window:mousemove');133 t.equal(events.length, 1);134 t.deepEqual(events[0], {135 between: [136 {source: 'view', type: 'touchstart'},137 {source: 'view', type: 'touchend'}138 ],139 stream: {140 source: 'window',141 type: 'mousemove',142 between: [143 {source: 'view', type: 'mousedown'},144 {source: 'view', type: 'mouseup'}145 ]146 }147 });148 events = vega.parseSelector('[mousedown[!event.item], window:mouseup] > window:mousemove');149 t.equal(events.length, 1);150 t.deepEqual(events[0], {151 source: 'window',152 type: 'mousemove',153 between: [154 {source: 'view', type: 'mousedown', filter: ['!event.item']},155 {source: 'window', type: 'mouseup'}156 ]157 });158 t.end();159});160tape('Parser allows configurable source', t => {161 const events = vega.parseSelector('rect:mousedown', 'scope');162 t.equal(events.length, 1);163 t.deepEqual(events[0], {164 source: 'scope',165 type: 'mousedown',166 marktype: 'rect'167 });168 t.end();169});170tape('Parser rejects invalid event parseSelector strings', t => {171 t.throws(() => { vega.parseSelector(''); });172 t.throws(() => { vega.parseSelector('foo{}'); });173 t.throws(() => { vega.parseSelector('foo{a}'); });174 t.throws(() => { vega.parseSelector('foo{1,2,3}'); });175 t.throws(() => { vega.parseSelector('{foo'); });176 t.throws(() => { vega.parseSelector('}foo'); });177 t.throws(() => { vega.parseSelector('foo{'); });178 t.throws(() => { vega.parseSelector('foo}'); });179 t.throws(() => { vega.parseSelector('foo{1'); });180 t.throws(() => { vega.parseSelector('foo}1'); });181 t.throws(() => { vega.parseSelector('foo{1}a'); });182 t.throws(() => { vega.parseSelector('{}'); });183 t.throws(() => { vega.parseSelector('{1}'); });184 t.throws(() => { vega.parseSelector('{1}a'); });185 t.throws(() => { vega.parseSelector('[foo'); });186 t.throws(() => { vega.parseSelector(']foo'); });187 t.throws(() => { vega.parseSelector('foo['); });188 t.throws(() => { vega.parseSelector('foo]'); });189 t.throws(() => { vega.parseSelector('foo[1'); });190 t.throws(() => { vega.parseSelector('foo]1'); });191 t.throws(() => { vega.parseSelector('foo[1]a'); });192 t.throws(() => { vega.parseSelector('[]'); });193 t.throws(() => { vega.parseSelector('[a]'); });194 t.throws(() => { vega.parseSelector('[a,b]'); });195 t.throws(() => { vega.parseSelector('[a,b] >'); });196 t.end();...
select.js
Source: select.js
...5 mocha.setup('bdd');6 describe('parse selectors', function() {7 describe('simple', function() {8 it('should parse "name"', function() {9 assert.deepEqual(parseSelector('name'), [{10 name: 'name'11 }]);12 });13 it('should parse "owner.name"', function() {14 assert.deepEqual(parseSelector('owner.name'), [{15 name: 'owner',16 properties: [{17 name: 'name'18 }]19 }]);20 });21 });22 describe('groups', function() {23 it('should parse "{ name, image }"', function() {24 assert.deepEqual(parseSelector('{ name, image }'), [{25 name: 'name'26 }, {27 name: 'image'28 }]);29 });30 it('should parse "name, image"', function() {31 assert.deepEqual(parseSelector('name, image'), [{32 name: 'name'33 }, {34 name: 'image'35 }]);36 });37 it('should parse "owner.{ name, image }"', function() {38 assert.deepEqual(parseSelector('owner.{ name, image }'), [{39 name: 'owner',40 properties: [{41 name: 'name'42 }, {43 name: 'image'44 }]45 }]);46 });47 it('should parse ["name", "image"]', function() {48 assert.deepEqual(parseSelector(['name', 'image']), [{49 name: 'name'50 }, {51 name: 'image'52 }]);53 });54 it('should parse "{ l1p1.{ l2p1.{ l3p1, l3p2 }, l2p2 }, l1p2.{ l2p3 }}"', function() {55 assert.deepEqual(parseSelector('{ l1p1.{ l2p1.{ l3p1, l3p2 }, l2p2 }, l1p2.{ l2p3 }}'), [{56 name: 'l1p1',57 properties: [{58 name: 'l2p1',59 properties: [{60 name: 'l3p1'61 }, {62 name: 'l3p2'63 }]64 }, {65 name: 'l2p2'66 }]67 }, {68 name: 'l1p2',69 properties: [{70 name: 'l2p3'71 }]72 }]);73 });74 });75 describe('collections', function() {76 it('should parse "tracks[0]"', function() {77 assert.deepEqual(parseSelector('tracks[0]'), [{78 name: 'tracks',79 slice: true,80 start: 0,81 end: 182 }]);83 });84 it('should parse "tracks[]"', function() {85 assert.deepEqual(parseSelector('tracks[]'), [{86 name: 'tracks',87 slice: true,88 start: 0,89 end: Infinity90 }]);91 });92 it('should parse "tracks[0..10]"', function() {93 assert.deepEqual(parseSelector('tracks[0..10]'), [{94 name: 'tracks',95 slice: true,96 start: 0,97 end: 1098 }]);99 });100 it('should parse "tracks[0...10]"', function() {101 assert.deepEqual(parseSelector('tracks[0...10]'), [{102 name: 'tracks',103 slice: true,104 start: 0,105 end: 11106 }]);107 });108 it('should parse "tracks[10..]"', function() {109 assert.deepEqual(parseSelector('tracks[10..]'), [{110 name: 'tracks',111 slice: true,112 start: 10,113 end: Infinity114 }]);115 });116 });117 describe('real world', function() {118 it('should parse "playlists[0..5].{name, image, uri, subscribers.length, owner.{name, username, uri}}"', function() {119 assert.deepEqual(parseSelector('playlists[0..5].{name, image, uri, subscribers.length, owner.{name, username, uri}}'), [{120 name: 'playlists',121 slice: true,122 start: 0,123 end: 5,124 properties: [{125 name: 'name'126 }, {127 name: 'image'128 }, {129 name: 'uri'130 }, {131 name: 'subscribers',132 properties: [{133 name: 'length'134 }]135 }, {136 name: 'owner',137 properties: [{138 name: 'name'139 }, {140 name: 'username'141 }, {142 name: 'uri'143 }]144 }]145 }]);146 });147 it('should parse "tracks[0..10].{ image, artists[].image }"', function() {148 assert.deepEqual(parseSelector('tracks[0..10].{ image, artists[].image }'), [{149 name: 'tracks',150 slice: true,151 start: 0,152 end: 10,153 properties: [{154 name: 'image'155 }, {156 name: 'artists',157 slice: true,158 start: 0,159 end: Infinity,160 properties: [{161 name: 'image'162 }]163 }]164 }]);165 });166 });167 describe('handle malformed', function() {168 it('should fail on "{ unclosed, group"', function() {169 assert.throws(function() { parseSelector('{ unclosed, group') }, SyntaxError);170 });171 it('should fail on "unstarted, group }"', function() {172 assert.throws(function() { parseSelector('unstarted, group }') }, SyntaxError);173 });174 it('should fail on "åäö"', function() {175 assert.throws(function() { parseSelector('åäö') }, SyntaxError);176 });177 });178 });...
json-path-example.js
Source: json-path-example.js
...42var p = jpath.create("#");43var res = p.resolve(data);44expect(res).to.contain(data);45// select the authors of all books:46p = jpath.parseSelector("#/store/book[*][#/author]");47res = jpath.executeSelectors(data, p);48expect(res).to.contain('Evelyn Waugh');49expect(res).to.contain('Nigel Rees');50expect(res).to.contain('Herman Melville');51expect(res).to.contain('J. R. R. Tolkien');52// select all authors:53p = jpath.parseSelector("[..#/author]");54res = jpath.executeSelectors(data, p);55expect(res).to.contain('Evelyn Waugh');56expect(res).to.contain('Nigel Rees');57expect(res).to.contain('Herman Melville');58expect(res).to.contain('J. R. R. Tolkien');59// select all things in store60p = jpath.parseSelector("#/store[*]");61res = jpath.executeSelectors(data, p);62expect(res).to.contain(data.store.book);63expect(res).to.contain(data.store.bicycle);64// resolved.should.eql(data);65// select the price of everything in the store66p = jpath.parseSelector("#/store[..#/price]");67res = jpath.executeSelectors(data, p);68expect(res).to.contain(8.95);69expect(res).to.contain(12.99);70expect(res).to.contain(8.99);71expect(res).to.contain(22.99);72expect(res).to.contain(19.95);73// select the third book74p = jpath.parseSelector("[..#/book/2]");75res = jpath.executeSelectors(data, p);76expect(res).to.contain(data.store.book[2]);77p = jpath.parseSelector("[..#/book[2]]");78res = jpath.executeSelectors(data, p);79expect(res).to.contain(data.store.book[2]);80// select the last book81p = jpath.parseSelector("[..#/book[last]]");82res = jpath.executeSelectors(data, p);83expect(res).to.contain(data.store.book[3]);84// select the first two books85p = jpath.parseSelector("[..#/book[0,1]]");86res = jpath.executeSelectors(data, p);87expect(res).to.contain(data.store.book[0]);88expect(res).to.contain(data.store.book[1]);89// select books without an isbn90p = jpath.parseSelector("[..#/book[*][#/isbn]]");91res = jpath.executeSelectors(data, p);92// select author and title from any book93p = jpath.parseSelector("..#/book[*][take(/author,/title)]");94res = jpath.executeSelectors(data, p);95expect(res[0]).to.eql({96 author: "Nigel Rees",97 title: "Sayings of the Century"98});99expect(res[1]).to.eql({100 author: "Evelyn Waugh",101 title: "Sword of Honour"102});103expect(res[2]).to.eql({104 author: "Herman Melville",105 title: "Moby Dick"106});107expect(res[3]).to.eql({108 author: "J. R. R. Tolkien",109 title: "The Lord of the Rings"110});111// select title and price as cost from any book112p = jpath.parseSelector("..#/book[*][take(/title,cost=/price)]");113res = jpath.executeSelectors(data, p);114expect(res[0]).to.eql({115 title: "Sayings of the Century",116 cost: 8.95117});118expect(res[1]).to.eql({119 title: "Sword of Honour",120 cost: 12.99121});122expect(res[2]).to.eql({123 title: "Moby Dick",124 cost: 8.99125});126expect(res[3]).to.eql({127 title: "The Lord of the Rings",128 cost: 22.99129});130// select books priced more than 10 via a selector fn131// p = jpath.parseSelector("[..#/book[*][!{#/price < 10 || !exists(#/author)}][@myfn]]");132p = jpath.parseSelector("[..#/book[*][@myfn]]");133res = jpath.executeSelectors(data, p, {134 myfn: function(obj, accum, sel) {135 if (obj.price && obj.price < 10)136 accum.push(obj);137 return accum;138 }139});140expect(res).to.contain(data.store.book[0]);141expect(res).to.contain(data.store.book[2]);142p = jpath.create("[..#/book[*][@myfn][#/category]]");143res = p.resolve(data, {144 myfn: function(obj, accum, sel) {145 if (obj.price && obj.price < 10)146 accum.push(obj);147 return accum;148 }149});150expect(res).to.contain(data.store.book[0].category);151expect(res).to.contain(data.store.book[2].category);152p = jpath.resolve(data, '/store/book[first(2)]');153p = jpath.create("#/store/book[*][@]");154var res = p.resolve(data, function(obj, accum, sel) {155 if (obj.price && obj.price < 10)156 accum.push(obj);157 return accum;158});159expect(res).to.contain(data["store"]["book"][0]);160expect(res).to.contain(data["store"]["book"][2]);161expect(res).to.have.length(2);...
Specificity.js
Source: Specificity.js
...8 YUITest.TestRunner.add(new YUITest.TestCase({9 name: "Specificity Tests",10 testSpecificity1: function() {11 var parser = new Parser(),12 selector = parser.parseSelector("*"),13 specificity = Specificity.calculate(selector);14 Assert.areEqual(0, specificity.valueOf());15 Assert.areEqual("0,0,0,0", specificity.toString());16 },17 testSpecificity2: function() {18 var parser = new Parser(),19 selector = parser.parseSelector("li"),20 specificity = Specificity.calculate(selector);21 Assert.areEqual(1, specificity.valueOf());22 Assert.areEqual("0,0,0,1", specificity.toString());23 },24 testSpecificity3: function() {25 var parser = new Parser(),26 selector = parser.parseSelector("li:first-line"),27 specificity = Specificity.calculate(selector);28 Assert.areEqual(2, specificity.valueOf());29 Assert.areEqual("0,0,0,2", specificity.toString());30 },31 testSpecificity4: function() {32 var parser = new Parser(),33 selector = parser.parseSelector("ul li"),34 specificity = Specificity.calculate(selector);35 Assert.areEqual(2, specificity.valueOf());36 Assert.areEqual("0,0,0,2", specificity.toString());37 },38 testSpecificity5: function() {39 var parser = new Parser(),40 selector = parser.parseSelector("ul ol+li"),41 specificity = Specificity.calculate(selector);42 Assert.areEqual(3, specificity.valueOf());43 Assert.areEqual("0,0,0,3", specificity.toString());44 },45 testSpecificity6: function() {46 var parser = new Parser(),47 selector = parser.parseSelector("h1 + *[rel=up]"),48 specificity = Specificity.calculate(selector);49 Assert.areEqual(11, specificity.valueOf());50 Assert.areEqual("0,0,1,1", specificity.toString());51 },52 testSpecificity7: function() {53 var parser = new Parser(),54 selector = parser.parseSelector("ul ol li.red"),55 specificity = Specificity.calculate(selector);56 Assert.areEqual(13, specificity.valueOf());57 Assert.areEqual("0,0,1,3", specificity.toString());58 },59 testSpecificity8: function() {60 var parser = new Parser(),61 selector = parser.parseSelector("li.red.level"),62 specificity = Specificity.calculate(selector);63 Assert.areEqual(21, specificity.valueOf());64 Assert.areEqual("0,0,2,1", specificity.toString());65 },66 testSpecificity9: function() {67 var parser = new Parser(),68 selector = parser.parseSelector(".f00"),69 specificity = Specificity.calculate(selector);70 Assert.areEqual(10, specificity.valueOf());71 Assert.areEqual("0,0,1,0", specificity.toString());72 },73 testSpecificity10: function() {74 var parser = new Parser(),75 selector = parser.parseSelector("div p.foo"),76 specificity = Specificity.calculate(selector);77 Assert.areEqual(12, specificity.valueOf());78 Assert.areEqual("0,0,1,2", specificity.toString());79 },80 testSpecificity11: function() {81 var parser = new Parser(),82 selector = parser.parseSelector("#foo"),83 specificity = Specificity.calculate(selector);84 Assert.areEqual(100, specificity.valueOf());85 Assert.areEqual("0,1,0,0", specificity.toString());86 },87 testSpecificity12: function() {88 var parser = new Parser(),89 selector = parser.parseSelector("body #foo .foo p"),90 specificity = Specificity.calculate(selector);91 Assert.areEqual(112, specificity.valueOf());92 Assert.areEqual("0,1,1,2", specificity.toString());93 },94 testSpecificity13: function() {95 var parser = new Parser(),96 selector = parser.parseSelector("#s12:not(FOO)"),97 specificity = Specificity.calculate(selector);98 Assert.areEqual(101, specificity.valueOf());99 Assert.areEqual("0,1,0,1", specificity.toString());100 }101 }));...
test.js
Source: test.js
...3var _NodeListener = require('component/selector/nodelistener.js');4var _matcher = require('component/selector/selector.js');5var _parser = require('component/selector/parser.js');6var _selector = require('component/selector.js');7function parseSelector(str) {8 var p = new _parser();9 p.parse(str);10}11//parseSelector('div > image');12//parseSelector('div>image');13//parseSelector('a>image>ui');14//parseSelector('a >image>ui');15//parseSelector('a > image>ui');16//parseSelector('a > image>ui');17//parseSelector('a > image>ui');18//parseSelector('a > image > ui');19//parseSelector('a > image > ui');20//parseSelector('a#abc');21//parseSelector('#abc');22//parseSelector('#abc>div');23//parseSelector('div>#abc');24//parseSelector('div > #abc>div');25//parseSelector('div > table#abc > div');26//parseSelector('div > table#abc>div.red');27//parseSelector('a>div.red');28//parseSelector('div.red>div.blue');29//parseSelector('div.red>div#blue');30//parseSelector('div.red>#blue');31//parseSelector('div.red>#blue');32//parseSelector('div[a=b]');33//parseSelector('div.red>div[a=b]');34//parseSelector('div[a=b] div');35//parseSelector('div[a=b] +div');36//parseSelector('div[a=b]+div');37//parseSelector('div#user_name image:focus');38//parseSelector('div#user_name>image:focus');39//parseSelector('div#user_name > image:focus');40function spiltProp(p) {41 var prop = {};42 if (!p || p.length == 0) {43 return prop;44 }45 for (var i = -1, coll = p.split(','), l = coll.length; ++i < l;) {46 var namevalue = coll[i].split('=');47 prop[namevalue[0]] = namevalue[1];48 }49 return prop;50}51function TestNode(type, prop, children) {52 this.type = type;53 this.mTag = type;...
postcss-plugin-version-attribute.js
...24 if (modified) {25 decl.value = words.toString();26 }27 };28 const processor = parseSelector(transform);29 return {30 Rule(rule) {31 const { selector } = rule;32 if (selector.indexOf(getVersionedAttribute()) === -1) {33 rule.selector = processor.processSync(selector);34 }35 },36 AtRule: {37 keyframes(atRule) {38 atRule.params = getVersionedKeyframeName(atRule.params);39 },40 },41 Declaration: {42 'font-family': decl => {...
parse-selector.test.js
Source: parse-selector.test.js
1import { parseSelector } from "../parse-selector";2describe("parseSelector", () => {3 it("should throw exception when $and, $or or $nor is encountered", () => {4 expect(() => {5 parseSelector({6 $and: [{ foo: "bar" }]7 });8 }).toThrow("$and");9 expect(() => {10 parseSelector({11 baz: "cow",12 $and: [{ foo: "bar" }]13 });14 }).toThrow("$and");15 expect(() => {16 parseSelector({17 $or: [{ foo: "bar" }]18 });19 }).toThrow("$or");20 expect(() => {21 parseSelector({22 baz: "cow",23 $or: [{ foo: "bar" }]24 });25 }).toThrow("$or");26 expect(() => {27 parseSelector({28 $nor: [{ foo: "bar" }]29 });30 }).toThrow("$nor");31 expect(() => {32 parseSelector({33 baz: "cow",34 $nor: [{ foo: "bar" }]35 });36 }).toThrow("$nor");37 expect(() => {38 parseSelector({39 $fooBar: [{ foo: "bar" }]40 });41 }).toThrow("$fooBar");42 expect(() => {43 parseSelector({44 baz: "cow",45 $fooBar: [{ foo: "bar" }]46 });47 }).toThrow("$fooBar");48 });49 it("should throw exception when in encounters invalid field specs", () => {50 // Now handle some invalid selectors...51 expect(() =>52 parseSelector({53 foo: {54 $eq: "foo",55 bar: "baz"56 }57 })58 ).toThrow("$-operators");59 });60 it("should list all fields with all their operators", () => {61 expect(parseSelector({})).toEqual([]);62 expect(parseSelector({ foo: "bar" })).toEqual([63 {64 field: "foo",65 op: "$eq",66 value: "bar"67 }68 ]);69 expect(parseSelector({ foo: null })).toEqual([70 {71 field: "foo",72 op: "$eq",73 value: null74 }75 ]);76 expect(parseSelector({ foo: undefined })).toEqual([77 {78 field: "foo",79 op: "$eq",80 value: undefined81 }82 ]);83 expect(parseSelector({ foo: { $eq: "bar" } })).toEqual([84 {85 field: "foo",86 op: "$eq",87 value: "bar"88 }89 ]);90 expect(parseSelector({ foo: "bar", baz: "cow" })).toEqual([91 {92 field: "foo",93 op: "$eq",94 value: "bar"95 },96 {97 field: "baz",98 op: "$eq",99 value: "cow"100 }101 ]);102 expect(103 parseSelector({ foo: { $exists: true, $nin: ["baz", "cow"] } })104 ).toEqual([105 {106 field: "foo",107 op: "$exists",108 value: true109 },110 {111 field: "foo",112 op: "$nin",113 value: ["baz", "cow"]114 }115 ]);116 expect(parseSelector({ foo: { bar: "baz" } })).toEqual([117 {118 field: "foo",119 op: "$eq",120 value: { bar: "baz" }121 }122 ]);123 expect(parseSelector({ foo: new Date(2015, 3, 1) })).toEqual([124 {125 field: "foo",126 op: "$eq",127 value: new Date(2015, 3, 1)128 }129 ]);130 expect(parseSelector({ foo: {} })).toEqual([131 {132 field: "foo",133 op: "$eq",134 value: {}135 }136 ]);137 });...
parseSelector.js
Source: parseSelector.js
1import test from 'tape';2import { parseSelector } from '../../lib/utils/parseSelector';3test('utils/parseSelector', t => {4 t.deepEqual(parseSelector('p'), [{5 tagName: 'p',6 id: null,7 classNames: null,8 relation: null9 }]);10 t.deepEqual(parseSelector('p.hello'), [{11 tagName: 'p',12 id: null,13 classNames: ['hello'],14 relation: null15 }]);16 t.deepEqual(parseSelector('p.hello.world'), [{17 tagName: 'p',18 id: null,19 classNames: ['hello', 'world'],20 relation: null21 }]);22 t.deepEqual(parseSelector('p#beep'), [{23 tagName: 'p',24 id: 'beep',25 classNames: null,26 relation: null27 }]);28 t.deepEqual(parseSelector('p#beep.boop'), [{29 tagName: 'p',30 id: 'beep',31 classNames: ['boop'],32 relation: null33 }]);34 t.deepEqual(parseSelector('p#beep.boop.bzzt'), [{35 tagName: 'p',36 id: 'beep',37 classNames: ['boop', 'bzzt'],38 relation: null39 }]);40 t.deepEqual(parseSelector('div p'), [{41 tagName: 'p',42 id: null,43 classNames: null,44 relation: ' '45 }, {46 tagName: 'div',47 id: null,48 classNames: null,49 relation: null50 }]);51 t.deepEqual(parseSelector('div > p'), [{52 tagName: 'p',53 id: null,54 classNames: null,55 relation: '>'56 }, {57 tagName: 'div',58 id: null,59 classNames: null,60 relation: null61 }]);62 t.deepEqual(parseSelector('div + p'), [{63 tagName: 'p',64 id: null,65 classNames: null,66 relation: '+'67 }, {68 tagName: 'div',69 id: null,70 classNames: null,71 relation: null72 }]);73 t.deepEqual(parseSelector('p ~ p'), [{74 tagName: 'p',75 id: null,76 classNames: null,77 relation: '~'78 }, {79 tagName: 'p',80 id: null,81 classNames: null,82 relation: null83 }]);84 t.end();...
Using AI Code Generation
1const { parseSelector } = require('playwright/lib/client/selectorParser');2const selector = parseSelector('css=div > span');3console.log(selector);4const { parseSelector } = require('playwright/lib/client/selectorParser');5const selector = parseSelector('css=div > span');6console.log(selector);7const { parseSelector } = require('playwright/lib/client/selectorParser');8const selector = parseSelector('css=div > span');9console.log(selector);10const { parseSelector } = require('playwright/lib/client/selectorParser');11const selector = parseSelector('css=div > span');12console.log(selector);13const { parseSelector } = require('playwright/lib/client/selectorParser');14const selector = parseSelector('css=div > span');15console.log(selector);16const { parseSelector } = require('playwright/lib/client/selectorParser');17const selector = parseSelector('css=div > span');18console.log(selector);19const { parseSelector } = require('playwright/lib/client/selectorParser');20const selector = parseSelector('css=div > span');21console.log(selector);22const { parseSelector } = require('playwright/lib/client/selectorParser');23const selector = parseSelector('css=div > span');24console.log(selector);25const { parseSelector } = require('playwright/lib/client/selectorParser');26const selector = parseSelector('css=div > span');27console.log(selector);28const { parseSelector } = require('playwright/lib/client/selectorParser');29const selector = parseSelector('css=div > span');30console.log(selector);31const { parseSelector } = require('playwright/lib/client/selectorParser');32const selector = parseSelector('css=div > span');33console.log(selector);34const {
Using AI Code Generation
1const { parseSelector } = require('@playwright/test/lib/server/frames');2const { parseSelector: parseSelector2 } = require('@playwright/test/lib/server/frames');3console.log(parseSelector('css=#foo'));4console.log(parseSelector2('css=#foo'));5{ name: 'css', value: '#foo' }6{ name: 'css', value: '#foo' }
Using AI Code Generation
1const { parseSelector } = require('@playwright/test/lib/server/selectorParser');2const selector = parseSelector('css=div#id.class1.class2');3console.log(selector);4{ name: 'css',5 parts: [ 'div#id.class1.class2' ] }6I am trying to use Playwright to test a site that uses a lot of JavaScript to render the page. I am trying to find a way to wait for the page to finish loading before I start evaluating the page. I know that there is a page.waitForLoadState() API, but it seems that it is not working as expected. I have tried to use this API in the following way:7await page.waitForLoadState('networkidle');8await page.waitForTimeout(5000);9await page.waitForLoadState('load');10await page.waitForLoadState('domcontentloaded');11const browser = await chromium.launch({ headless: false });12const page = await browser.newPage();13await browser.close();14await page.close();15const title = await page.title();16console.log(title);17console.log(page.url());18console.log(page.content());
Using AI Code Generation
1const { parseSelector } = require('playwright/lib/utils/selectorParser');2const selector = parseSelector('css=div > span:has-text("Hello")');3console.log(selector);4const { parseSelector } = require('playwright/lib/utils/selectorParser');5console.log(selector);6const { parseSelector } = require('playwright/lib/utils/selectorParser');7const selector = parseSelector('text=Hello');8console.log(selector);9const { parseSelector } = require('playwright/lib/utils/selectorParser');10const selector = parseSelector('text=Hello, World!');11console.log(selector);12const { parseSelector } = require('playwright/lib/utils/selectorParser');13const selector = parseSelector('text="Hello, World!"');14console.log(selector);
Using AI Code Generation
1const selector = playwright.parseSelector('css=button');2console.log(selector);3{4}5const selector = playwright.parseSelector('css=button');6if (selector.specificity === 1) {7 console.log('Unique selector');8} else {9 console.log('Selector is not unique');10}11const selector = playwright.parseSelector('css=button');12if (selector.specificity === 1 && selector.parts[0] === 'button') {13 console.log('Unique selector for element');14} else {15 console.log('Selector is not unique for element');16}
Using AI Code Generation
1const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');2console.log(selector);3const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');4console.log(selector);5const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');6console.log(selector);7const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');8console.log(selector);9const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');10console.log(selector);11const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');12console.log(selector);13const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');14console.log(selector);15const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');16console.log(selector);17const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');18console.log(selector);19const {
Jest + Playwright - Test callbacks of event-based DOM library
firefox browser does not start in playwright
Is it possible to get the selector from a locator object in playwright?
How to run a list of test suites in a single file concurrently in jest?
Running Playwright in Azure Function
firefox browser does not start in playwright
This question is quite close to a "need more focus" question. But let's try to give it some focus:
Does Playwright has access to the cPicker object on the page? Does it has access to the window object?
Yes, you can access both cPicker and the window object inside an evaluate call.
Should I trigger the events from the HTML file itself, and in the callbacks, print in the DOM the result, in some dummy-element, and then infer from that dummy element text that the callbacks fired?
Exactly, or you can assign values to a javascript variable:
const cPicker = new ColorPicker({
onClickOutside(e){
},
onInput(color){
window['color'] = color;
},
onChange(color){
window['result'] = color;
}
})
And then
it('Should call all callbacks with correct arguments', async() => {
await page.goto(`http://localhost:5000/tests/visual/basic.html`, {waitUntil:'load'})
// Wait until the next frame
await page.evaluate(() => new Promise(requestAnimationFrame))
// Act
// Assert
const result = await page.evaluate(() => window['color']);
// Check the value
})
Check out the latest blogs from LambdaTest on this topic:
Native apps are developed specifically for one platform. Hence they are fast and deliver superior performance. They can be downloaded from various app stores and are not accessible through browsers.
One of the essential parts when performing automated UI testing, whether using Selenium or another framework, is identifying the correct web elements the tests will interact with. However, if the web elements are not located correctly, you might get NoSuchElementException in Selenium. This would cause a false negative result because we won’t get to the actual functionality check. Instead, our test will fail simply because it failed to interact with the correct element.
Smartphones have changed the way humans interact with technology. Be it travel, fitness, lifestyle, video games, or even services, it’s all just a few touches away (quite literally so). We only need to look at the growing throngs of smartphone or tablet users vs. desktop users to grasp this reality.
As part of one of my consulting efforts, I worked with a mid-sized company that was looking to move toward a more agile manner of developing software. As with any shift in work style, there is some bewilderment and, for some, considerable anxiety. People are being challenged to leave their comfort zones and embrace a continuously changing, dynamic working environment. And, dare I say it, testing may be the most ‘disturbed’ of the software roles in agile development.
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!