Best JavaScript code snippet using playwright-internal
grasp.js
Source:grasp.js  
...4909    '>': 'child',4910    '~': 'sibling',4911    '+': 'adjacent'4912  };4913  function consumeComplexSelector(tokens){4914    var ops, root, wildcard, result, op, opVal, selector;4915    ops = /^[\s>~+]$/;4916    root = {4917      type: 'root'4918    };4919    wildcard = {4920      type: 'wildcard'4921    };4922    result = peekOp(tokens, ops)4923      ? root4924      : consumeCompoundSelector(tokens);4925    while (peekOp(tokens, ops)) {4926      op = tokens.shift();4927      opVal = op.value;4928      selector = consumeCompoundSelector(tokens);4929      result = {4930        type: operatorMap[opVal],4931        operator: opVal,4932        left: result,4933        right: selector || wildcard4934      };4935    }4936    return result;4937  }4938  function consumeCompoundSelector(tokens){4939    var result, that, selector;4940    result = consumeSelector(tokens);4941    if (that = consumeProps(tokens)) {4942      result = (that.left = result, that);4943    }4944    while (tokens.length > 0) {4945      selector = consumeSelector(tokens);4946      if (selector) {4947        if (result.type !== 'compound') {4948          result = {4949            type: 'compound',4950            selectors: [result]4951          };4952        }4953        result.selectors.push(selector);4954        if (that = consumeProps(tokens)) {4955          result = (that.left = result, that);4956        }4957      } else {4958        break;4959      }4960    }4961    return result || selector;4962  }4963  function mapSimpleSelector(value){4964    return {4965      type: 'identifier',4966      value: aliasMap[value] || value4967    };4968  }4969  function consumeIdentifier(tokens){4970    var value, val;4971    value = tokens.shift().value;4972    if (value in literalMap) {4973      return {4974        type: 'compound',4975        selectors: [4976          {4977            type: 'identifier',4978            value: 'Literal'4979          }, {4980            type: 'attribute',4981            name: 'value',4982            operator: '=',4983            valType: 'primitive',4984            value: {4985              type: 'type',4986              value: literalMap[value]4987            }4988          }4989        ]4990      };4991    } else if (value in matchesMap || value in matchesAliasMap) {4992      return {4993        type: 'matches',4994        selectors: (function(){4995          var i$, ref$, len$, results$ = [];4996          for (i$ = 0, len$ = (ref$ = matchesMap[matchesAliasMap[value] || value]).length; i$ < len$; ++i$) {4997            val = ref$[i$];4998            results$.push({4999              type: 'identifier',5000              value: val5001            });5002          }5003          return results$;5004        }())5005      };5006    } else if (value in complexTypeMap) {5007      switch (complexTypeMap[value]) {5008      case 'ImmediatelyInvokedFunctionExpression':5009        return {5010          type: 'compound',5011          selectors: [5012            {5013              type: 'identifier',5014              value: 'CallExpression'5015            }, {5016              type: 'attribute',5017              name: 'callee',5018              operator: '=',5019              valType: 'complex',5020              value: {5021                type: 'matches',5022                selectors: [5023                  {5024                    type: 'identifier',5025                    value: 'FunctionExpression'5026                  }, {5027                    type: 'compound',5028                    selectors: [5029                      {5030                        type: 'identifier',5031                        value: 'MemberExpression'5032                      }, {5033                        type: 'attribute',5034                        name: 'object',5035                        operator: '=',5036                        valType: 'complex',5037                        value: {5038                          type: 'identifier',5039                          value: 'FunctionExpression'5040                        }5041                      }, {5042                        type: 'attribute',5043                        name: 'property',5044                        operator: '=',5045                        valType: 'complex',5046                        value: {5047                          type: 'matches',5048                          selectors: [5049                            {5050                              type: 'compound',5051                              selectors: [5052                                {5053                                  type: 'identifier',5054                                  value: 'Identifier'5055                                }, {5056                                  type: 'attribute',5057                                  name: 'name',5058                                  operator: '=',5059                                  valType: 'primitive',5060                                  value: {5061                                    type: 'literal',5062                                    value: 'call'5063                                  }5064                                }5065                              ]5066                            }, {5067                              type: 'compound',5068                              selectors: [5069                                {5070                                  type: 'identifier',5071                                  value: 'Identifier'5072                                }, {5073                                  type: 'attribute',5074                                  name: 'name',5075                                  operator: '=',5076                                  valType: 'primitive',5077                                  value: {5078                                    type: 'literal',5079                                    value: 'apply'5080                                  }5081                                }5082                              ]5083                            }5084                          ]5085                        }5086                      }5087                    ]5088                  }5089                ]5090              }5091            }5092          ]5093        };5094      }5095    } else {5096      return mapSimpleSelector(value);5097    }5098  }5099  function consumeSelector(tokens){5100    var selector, token, value;5101    selector = peekType(tokens, 'wildcard')5102      ? tokens.shift()5103      : peekOp(tokens, '::')5104        ? (tokens.shift(), consumeIdentifier(tokens))5105        : peekType(tokens, ['keyword', 'identifier'])5106          ? consumeIdentifier(tokens)5107          : peekType(tokens, ['number', 'string', 'regexp', 'boolean', 'null'])5108            ? consumeLiteral(tokens)5109            : peekOp(tokens, ':')5110              ? consumePseudo(tokens)5111              : peekOp(tokens, /\[&?/)5112                ? consumeAttribute(tokens)5113                : peekOp(tokens, '#')5114                  ? (consumeOp(tokens, '#'), token = tokens.shift(), value = token.value, {5115                    type: 'compound',5116                    selectors: [5117                      {5118                        type: 'identifier',5119                        value: 'Identifier'5120                      }, {5121                        type: 'attribute',5122                        name: 'name',5123                        operator: token.type === 'regexp' ? '=~' : '=',5124                        valType: 'primitive',5125                        value: {5126                          type: 'literal',5127                          value: value5128                        }5129                      }5130                    ]5131                  })5132                  : peekOp(tokens, '(')5133                    ? consumeImplicitMatches(tokens)5134                    : peekOp(tokens, '.') ? {5135                      type: 'root'5136                    } : void 8;5137    if (selector) {5138      if (peekOp(tokens, '!')) {5139        tokens.shift();5140        selector.subject = true;5141      }5142    }5143    return selector;5144  }5145  function consumeProps(tokens){5146    var props, propSubjectIndices, i, ref$;5147    props = [];5148    propSubjectIndices = {};5149    i = 0;5150    while (peekOp(tokens, '.') || peekOp(tokens, ':') && ((ref$ = tokens[1].value) === 'first' || ref$ === 'head' || ref$ === 'tail' || ref$ === 'last' || ref$ === 'initial' || ref$ === 'nth' || ref$ === 'nth-last' || ref$ === 'slice')) {5151      props.push(peekOp(tokens, '.')5152        ? consumeProp(tokens)5153        : consumePseudo(tokens));5154      if (peekOp(tokens, '!')) {5155        consumeOp(tokens, '!');5156        propSubjectIndices[i] = true;5157      }5158      i++;5159    }5160    if (props.length) {5161      return {5162        type: 'prop',5163        props: props,5164        subjects: propSubjectIndices5165      };5166    }5167  }5168  function consumeLiteral(tokens){5169    var token, value;5170    token = tokens.shift();5171    value = token.value;5172    return {5173      type: 'compound',5174      selectors: [5175        {5176          type: 'identifier',5177          value: 'Literal'5178        }, {5179          type: 'attribute',5180          name: 'value',5181          operator: '=',5182          valType: 'primitive',5183          value: {5184            type: 'literal',5185            value: value5186          }5187        }5188      ]5189    };5190  }5191  function consumePseudo(tokens){5192    var op, id, that;5193    op = consumeOp(tokens, ':');5194    id = consumeType(tokens, 'keyword');5195    switch (that = id.value) {5196    case 'root':5197    case 'first':5198    case 'head':5199    case 'tail':5200    case 'last':5201    case 'initial':5202      return {5203        type: that5204      };5205    case 'nth':5206    case 'nth-last':5207    case 'nth-child':5208    case 'nth-last-child':5209      return {5210        type: that,5211        index: consumeArg(tokens)5212      };5213    case 'slice':5214      return {5215        type: that,5216        indicies: consumeArgList(tokens)5217      };5218    case 'first-child':5219      return {5220        type: 'nth-child',5221        index: {5222          type: 'literal',5223          value: 05224        }5225      };5226    case 'last-child':5227      return {5228        type: 'nth-last-child',5229        index: {5230          type: 'literal',5231          value: 05232        }5233      };5234    case 'matches':5235      return consumeImplicitMatches(tokens);5236    case 'not':5237      return {5238        type: that,5239        selectors: consumeComplexArgList(tokens)5240      };5241    default:5242      throw createError('Unexpected keyword:', id, tokens);5243    }5244  }5245  function consumeName(tokens){5246    var name, val;5247    name = '';5248    while (!name || peekOp(tokens, '.')) {5249      if (name) {5250        consumeOp(tokens, '.');5251        name += '.';5252      }5253      val = consumeType(tokens, ['keyword', 'identifier']).value;5254      name += attrMap[val] || val;5255    }5256    return name;5257  }5258  function consumeAttribute(tokens){5259    var op, name, lastName, nextOp, nextToken, val, ref$, valType, value, selector;5260    op = consumeType(tokens, 'operator').value;5261    name = consumeName(tokens);5262    lastName = last(name.split('.'));5263    nextOp = consumeType(tokens, 'operator').value;5264    if (nextOp === ']') {5265      return {5266        type: 'attribute',5267        name: name5268      };5269    } else {5270      nextToken = tokens[0];5271      ref$ = op === '[&' || nextToken.type === 'type' || in$(lastName, primitiveOnlyAttributes)5272        ? ['primitive', consumeValue(tokens)]5273        : in$(lastName, eitherAttributes)5274          ? (val = consumeValue([tokens[0]]), [5275            'either', {5276              type: val.type,5277              value: val.value,5278              sel: consumeSelector(tokens)5279            }5280          ])5281          : ['complex', consumeComplexSelector(tokens)], valType = ref$[0], value = ref$[1];5282      selector = {5283        type: 'attribute',5284        name: name,5285        operator: nextOp,5286        valType: valType,5287        value: value5288      };5289      consumeOp(tokens, ']');5290      return selector;5291    }5292  }5293  function consumeProp(tokens){5294    var token, name;5295    consumeOp(tokens, '.');5296    if (peekType(tokens, ['identifier', 'number', 'null', 'boolean'])) {5297      token = consumeType(tokens, ['identifier', 'number', 'null', 'boolean']);5298      name = token.value;5299      return {5300        type: 'string',5301        value: attrMap[name] || name5302      };5303    } else {5304      return {5305        type: 'wildcard'5306      };5307    }5308  }5309  function consumeComplexArgList(tokens){5310    var result, arg;5311    consumeOp(tokens, '(');5312    result = [];5313    while (tokens.length > 0) {5314      arg = consumeComplexSelector(tokens);5315      if (arg) {5316        result.push(arg);5317      } else {5318        throw createError('Expected selector argument:', tokens[0], tokens);5319      }5320      if (peekOp(tokens, ',')) {5321        consumeOp(tokens, ',');5322      } else {5323        break;5324      }5325    }5326    consumeOp(tokens, ')');5327    return result;5328  }...cssParser.js
Source:cssParser.js  
...86  function consumeArgument() {87    skipWhitespace();88    if (isNumber()) return tokens[pos++].value;89    if (isString()) return tokens[pos++].value;90    return consumeComplexSelector();91  }92  function consumeComplexSelector() {93    skipWhitespace();94    const result = {95      simples: [{96        selector: consumeSimpleSelector(),97        combinator: ''98      }]99    };100    while (true) {101      skipWhitespace();102      if (isClauseCombinator()) {103        result.simples[result.simples.length - 1].combinator = tokens[pos++].value;104        skipWhitespace();105      } else if (isSelectorClauseEnd()) {106        break;...Using AI Code Generation
1const { consumeComplexSelector } = require('playwright/lib/client/selectorEngine');2const { chromium } = require('playwright');3(async () => {4  const browser = await chromium.launch();5  const context = await browser.newContext();6  const page = await context.newPage();7  const selector = await consumeComplexSelector('text=Playwright');8  await page.waitForSelector(selector);9  await browser.close();10})();11const { consumeComplexSelector } = require('playwright/lib/client/selectorEngine');12const { chromium } = require('playwright');13(async () => {14  const browser = await chromium.launch();15  const context = await browser.newContext();16  const page = await context.newPage();17  await page.waitForSelector(await consumeComplexSelector('text=Playwright'));18  await browser.close();19})();20const { consumeComplexSelector } = require('playwright/lib/client/selectorEngine');21const { chromium } = require('playwright');22(async () => {23  const browser = await chromium.launch();24  const context = await browser.newContext();25  const page = await context.newPage();26  await page.waitForSelector(await consumeComplexSelector('text=Playwright'));27  await browser.close();28})();29const { consumeComplexSelector } = require('playwright/lib/client/selectorEngine');30const { chromium } = require('playwright');31(async () => {32  const browser = await chromium.launch();33  const context = await browser.newContext();34  const page = await context.newPage();35  await page.waitForSelector(await consumeComplexSelector('text=Playwright'));36  await browser.close();37})();38const { consumeComplexSelector } = require('playwright/lib/client/selectorEngine');39const { chromium } = require('playwright');40(async () => {41  const browser = await chromium.launch();42  const context = await browser.newContext();Using AI Code Generation
1const { consumeComplexSelector } = require('@playwright/test/lib/server/selectorEngine');2const { parseSelector } = require('@playwright/test/lib/server/selectorParser');3const { test } = require('@playwright/test');4test('test', async ({ page }) => {5  await page.setContent(`<div class="foo"><div class="bar"></div></div>`);6  const selector = parseSelector('css=div.foo >> css=div.bar');7  const complexSelector = consumeComplexSelector(selector);8  const handle = await page.$(complexSelector);9  console.log(await handle.getAttribute('class'));10});Using AI Code Generation
1const { consumeComplexSelector } = require('playwright-core/lib/server/selectors/selectorEngine');2const { Selector } = require('playwright-core/lib/server/selectors/selector');3const { parseSelector } = require('playwright-core/lib/server/selectors/parser');4const { SelectorEvaluator } = require('playwright-core/lib/server/selectors/evaluator');5const selector = parseSelector('text="Add to basket"');6const selectorEvaluator = new SelectorEvaluator();7const result = consumeComplexSelector(selector, selectorEvaluator);8console.log(result);Using AI Code Generation
1const { consumeComplexSelector } = require('@playwright/test/lib/complexSelector');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4  const element = await consumeComplexSelector('text=Get started');5  await element.click();6});Using AI Code Generation
1const { consumeComplexSelector } = require('playwright/lib/server/dom.js');2const { parseSelector } = require('playwright/lib/server/selectorParser.js');3const { toCSSSelector } = require('playwright/lib/server/selectorEngine.js');4const { toJQuerySelector } = require('playwright/lib/server/selectorEngine.js');5const { toTextSelector } = require('playwright/lib/server/selectorEngine.js');6const { toXPath } = require('playwright/lib/server/selectorEngine.js');7const { evaluate } = require('playwright/lib/server/dom.js');8const { evaluateHandle } = require('playwright/lib/server/dom.js');9const { parseSelector } = require('playwright/lib/server/selectorParser.js');10const { toCSSSelector } = require('playwright/lib/server/selectorEngine.js');11const { toJQuerySelector } = require('playwright/lib/server/selectorEngine.js');12const { toTextSelector } = require('playwright/lib/server/selectorEngine.js');13const { toXPath } = require('playwright/lib/server/selectorEngine.js');14const { toError } = require('playwright/lib/server/error.js');15const { toProtocolError } = require('playwright/lib/server/error.js');16const { toErrorString } = require('playwright/lib/server/error.js');17const { toExceptionMessage } = require('playwright/lib/server/error.js');18const { toExceptionDetails } = require('playwright/lib/server/error.js');19const { toConsoleMessageLocation } = require('playwright/lib/server/error.js');Using AI Code Generation
1const { consumeComplexSelector } = require('@playwright/test/lib/utils/complexSelectorParser');2const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');3const selector = 'css=div >> css=button >> text="Click me"';4const complexSelector = parseSelector(selector);5const parsedSelector = consumeComplexSelector(complexSelector);6console.log(parsedSelector);7{8    {9    },10    {11    },12    {13    }14}15const { consumeComplexSelector } = require('@playwright/test/lib/utils/complexSelectorParser');16const { parseSelector } = require('@playwright/test/lib/utils/selectorParser');17const { Selector } = require('@playwright/test');18const selector = 'css=div >> css=button >> text="Click me"';19const complexSelector = parseSelector(selector);20const parsedSelector = consumeComplexSelector(complexSelector);21console.log(parsedSelector);22const selectorEngine = (selector) => {23  return Selector(selector);24};25const createComplexSelector = (parsedSelector) => {26  let complexSelector = selectorEngine(parsedSelector.parts[0].selector);27  for (let i = 1; i < parsedSelector.parts.length; i++) {Using AI Code Generation
1const { consumeComplexSelector } = require('playwright/lib/server/selectorParser');2const parsedSelector = consumeComplexSelector(complexSelector);3const { consumeTextSelector } = require('playwright/lib/server/selectorParser');4const textSelector = 'text=Login';5const parsedSelector = consumeTextSelector(textSelector);6const { consumeSelector } = require('playwright/lib/server/selectorParser');7const parsedSelector = consumeSelector(selector);8const { consumeSelectorEngine } = require('playwright/lib/server/selectorParser');9const selectorEngine = 'css=button';10const parsedSelector = consumeSelectorEngine(selectorEngine);11const { parseSelector } = require('playwright/lib/server/selectorParser');12const parsedSelector = parseSelector(selector);13const { parseSelector } = require('playwright/lib/server/selectorParser');14const selector = 'text=Login';15const parsedSelector = parseSelector(selector);16const { parseSelector } = require('playwright/lib/server/selectorParser');17const parsedSelector = parseSelector(selector);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!!
