Best JavaScript code snippet using playwright-internal
Compiler.js
Source:Compiler.js  
...92                let pos = getPos();93                skipBlanks();94                if (lookahead("struct")) {95                    let stmt = { type: "StructDefinition", member: [], pos: pos };96                    stmt.name = readIdentifier();97                    consume("{");98                    while (definitionIncoming()) {99                        let def = readDefinition();100                        stmt.member.push(def);101                        consume(";");102                    }103                    consume("}");104                    typeNames.push(stmt.name);105                    sortTypeStrings();106                    stmts.push(stmt);107                }108                else if (lookahead("enum")) {109                    let stmt = { type: "EnumDefinition", member: [], pos: pos };110                    stmt.name = readIdentifier();111                    consume("{");112                    while (identifierIncoming()) {113                        stmt.member.push(readIdentifier());114                        if (!lookahead(","))115                            break;116                    }117                    consume("}");118                    typeNames.push(stmt.name);119                    sortTypeStrings();120                    stmts.push(stmt);121                }122                else if (lookahead("typedef")) {123                    let def = readDefinition();124                    def.type = "TypeDefStatement";125                    def.pos = pos;126                    typeNames.push(def.name);127                    sortTypeStrings();128                    consume(";");129                    stmts.push(def);130                }131                else if (definitionIncoming()) {132                    let def = readDefinition();133                    def.pos = pos;134                    if (lookahead("(")) //function definition135                    {136                        def.arguments = parseArgumentDefinition();137                        if (lookahead(";")) {138                            def.type = "FunctionDefinition";139                        }140                        else {141                            def.type = "FunctionDeclaration";142                            def.body = parseBody();143                        }144                        stmts.push(def);145                    }146                    else // global variable definition147                    {148                        if (lookahead("="))149                            def.value = parseExpression(";");150                        else151                            consume(";");152                        def.type = "GlobalVariableDeclaration";153                        stmts.push(def);154                    }155                }156                else {157                    unexpected("struct, enum, typdef, extern, FunctionDeclaration or VariableDeclaration");158                }159            }160            return stmts;161        }162        function parseArgumentDefinition() {163            let args = [];164            while (definitionIncoming()) {165                args.push(readDefinition());166                if (lookahead(")"))167                    return args;168                consume(",");169            }170            consume(")");171            return args;172        }173        function parseBody() {174            let stmts = [];175            consume("{");176            while (!(curr === "}" || !curr)) {177                let stmt = parseStatement();178                stmts.push(stmt);179            }180            consume("}");181            return stmts;182        }183        function parseStatement() {184            let pos = getPos();185            if (lookahead("return")) {186                return {187                    type: "ReturnStatement",188                    value: parseExpression(";"),189                    pos: pos190                };191            }192            else if (lookahead("if")) {193                consume("(");194                let stmt = { type: "IfStatement", pos: pos };195                stmt.condition = parseExpression(")");196                stmt.body = parseBody();197                if (lookahead("else"))198                    stmt.else = parseBody();199                return stmt;200            }201            else if (lookahead("while")) {202                consume("(");203                return {204                    type: "WhileStatement",205                    condition: parseExpression(")"),206                    body: parseBody(),207                    pos: pos208                };209            }210            else if (lookahead("do")) {211                let stmt = { type: "DoWhileStatement", pos: pos };212                stmt.body = parseBody();213                consume("while");214                consume("(");215                stmt.condition = parseExpression(")");216                consume(";");217                return stmt;218            }219            else if (lookahead("for")) {220                let stmt = { type: "ForStatement", pos: pos };221                consume("(");222                stmt.init = parseStatement();223                stmt.condition = parseExpression(";");224                stmt.step = parseExpression(")");225                stmt.body = parseBody();226                return stmt;227            }228            else if (definitionIncoming()) {229                let def = readDefinition();230                if (lookahead("="))231                    def.value = parseExpression(";");232                else233                    consume(";");234                def.type = "VariableDeclaration";235                def.pos = pos;236                return def;237            }238            else {239                return {240                    type: "ExpressionStatement",241                    expression: parseExpression(";"),242                    pos: pos243                };244            }245        }246        function parseExpression(end) {247            let expr = parseBinary(parseUnary(), 0);248            if (end)249                consume(end);250            return expr;251        }252        function peekBinaryOp() {253            let _index = index;254            for (let sortedOp of sortedOps) {255                if (lookahead(sortedOp)) {256                    index = _index;257                    curr = src[index];258                    return sortedOp;259                }260            }261        }262        function parseBinary(left, minPrec) {263            let ahead = peekBinaryOp();264            while (ahead && ops[ahead] >= minPrec) {265                let op = ahead;266                let pos = getPos();267                consume(op);268                let right = parseUnary();269                ahead = peekBinaryOp();270                while (ahead && ops[ahead] > ops[op]) {271                    right = parseBinary(right, ops[ahead]);272                    ahead = peekBinaryOp();273                }274                left = {275                    type: "BinaryExpression",276                    operator: op,277                    left: left,278                    right: right,279                    pos: pos280                };281            }282            return left;283        }284        function parseUnary() {285            let expr;286            let pos = getPos();287            for (let op in prefixedOps) {288                if (lookahead(op)) {289                    return {290                        type: "PrefixExpression",291                        operator: op,292                        value: parseUnary(),293                        pos: pos294                    };295                }296            }297            if (lookahead("(")) {298                if (definitionIncoming()) {299                    expr = {300                        type: "CastExpression",301                        targetType: readDefinition(true),302                    };303                    consume(")");304                    expr.value = parseUnary()305                }306                else {307                    expr = parseExpression(")");308                }309            }310            else if (lookahead("{")) {311                let entries = [];312                while (curr) {313                    entries.push(parseExpression());314                    if (!lookahead(","))315                        break;316                }317                consume("}");318                expr = {319                    type: "Literal",320                    value: entries321                };322            }323            else if (lookahead("'")) {324                let val = curr.charCodeAt(0);325                if (curr === "\\")326                    val = readEscapeSequence().charCodeAt(0);327                else328                    next(true, true);329                consume("'");330                expr = {331                    type: "Literal",332                    source: "CharCode",333                    value: val334                };335            }336            else if (stringIncoming()) {337                expr = {338                    type: "Literal",339                    value: readString()340                };341            }342            else if (numberIncoming()) {343                expr = {344                    type: "Literal",345                    value: readNumber()346                };347            }348            else if (identifierIncoming()) {349                let val = readIdentifier();350                expr = {351                    type: "Identifier",352                    value: val353                };354            }355            else {356                return;357            }358            if (lookahead("[")) {359                let index = parseExpression();360                consume("]");361                expr = {362                    type: "IndexExpression",363                    value: expr,364                    index: index365                };366            }367            else if (lookahead("(")) {368                let args = [];369                while (curr) {370                    args.push(parseExpression());371                    if (!lookahead(","))372                        break;373                }374                consume(")");375                expr = {376                    type: "CallExpression",377                    base: expr,378                    arguments: args379                };380            }381            expr.pos = pos;382            let suffixPos = getPos();383            for (let op in suffixedOps) {384                if (lookahead(op)) {385                    return {386                        type: "SuffixExpression",387                        operator: op,388                        value: expr,389                        pos: suffixPos390                    };391                }392            }393            return expr;394        }395        function definitionIncoming() {396            let _index = index;397            for (let i = 0; i < typeModifier.length; i++) {398                if (lookahead(typeModifier[i])) {399                    index = _index;400                    curr = src[index];401                    return true;402                }403            }404            for (let i = 0; i < typeNames.length; i++) {405                if (lookahead(typeNames[i])) {406                    index = _index;407                    curr = src[index];408                    return true;409                }410            }411        }412        function readDefinition(nameless) {413            let name;414            let pos = getPos();415            let def = {416                type: "Type",417                modifier: [],418                pos: getPos()419            };420            do {421                var read = false;422                for (let j = 0; j < typeModifier.length; j++) {423                    if (lookahead(typeModifier[j])) {424                        def.modifier.push(typeModifier[j]);425                        read = true;426                    }427                }428            } while (read);429            for (let i = 0; i < typeNames.length; i++) {430                if (lookahead(typeNames[i])) {431                    def.name = typeNames[i];432                    while (lookahead("*")) {433                        //TODO allow 'const' in between434                        def = {435                            type: "PointerType",436                            target: def,437                            pos: getPos()438                        };439                    }440                    if (!nameless)441                        name = readIdentifier();442                    while (lookahead("[")) {443                        def = {444                            type: "PointerType",445                            target: def,446                            pos: getPos()447                        };448                        if (!lookahead("]")) {449                            def.length = parseExpression();450                            consume("]");451                        }452                    }453                    if (name) {454                        def = {455                            type: "Definition",456                            defType: def,457                            name: name,458                            pos: pos459                        };460                    }461                    return def;462                }463            }464            unexpected(typeNames.join(", "));465        }466        function stringIncoming() {467            return curr && curr === "\"";468        }469        function readString(keepBlanks) {470            let val = [];471            next(true, true);472            while (curr && curr !== "\"") {473                if (curr === "\\") {474                    next(true, true);475                    val.push(readEscapeSequence());476                }477                else {478                    val.push(curr);479                    next(true, true);480                }481            }482            if (!lookahead("\"", keepBlanks))483                unexpected("\"");484            return val.join("");485        }486        function readEscapeSequence() {487            if (curr === "x") {488                next(true, true);489                let val = 0;490                while (/[0-9A-Fa-f]/.test(curr)) {491                    val = (val << 4) + parseInt(curr, 16);492                    next(true, true);493                }494                return String.fromCharCode(val);495            }496            else if (/[0-7]/.test(curr)) {497                let val = 0;498                while (/[0-7]/.test(curr)) {499                    val = (val << 3) + parseInt(curr, 16);500                    next(true, true);501                }502                return String.fromCharCode(val);503            }504            else if (stringEscapes[curr]) {505                let escape = stringEscapes[curr];506                next(true, true);507                return escape;508            }509            unexpected("escape sequence");510        }511        function numberIncoming() {512            return curr && /[0-9]/.test(curr);513        }514        function readNumber(keepBlanks) {515            let val = read(/[0-9.]/, "Number", /[0-9]/, keepBlanks);516            return parseFloat(val);517        }518        function identifierIncoming() {519            return curr && /[A-Za-z_]/.test(curr);520        }521        function readIdentifier(keepBlanks) {522            return read(/[A-Za-z0-9_]/, "Identifier", /[A-Za-z_]/, keepBlanks);523        }524        function read(reg, expected, startreg, keepBlanks) {525            startreg = startreg || reg;526            if (!startreg.test(curr))527                unexpected(expected);528            let val = [curr];529            next(true);530            while (curr && reg.test(curr)) {531                val.push(curr);532                next(true);533            }534            if (!keepBlanks)535                skipBlanks();...createBtDefinitions.js
Source:createBtDefinitions.js  
...201      this.descriptorDefinitions = 0202      this.debug('Bluetooth Numbers: %d descriptors', btNumbers.descriptors.length)203      for (const descriptor of btNumbers.descriptors.sort(byUuid)) {204        descriptor.key = nameToKey(descriptor.name)205        const definition = await this.readIdentifier(descriptor.identifier)206        if (definition != null) {207          this.descriptorDefinitions++208          descriptor.definition = definition209        }210        this.descriptors[descriptor.uuid] = descriptor211        this.descriptorsByKey[descriptor.key] = descriptor.uuid212      }213      this.characteristics = {}214      this.characteristicsByKey = {}215      this.characteristicDefinitions = 0216      this.debug('Bluetooth Numbers: %d characteristics', btNumbers.characteristics.length)217      for (const characteristic of btNumbers.characteristics.sort(byUuid)) {218        characteristic.key = nameToKey(characteristic.name)219        const definition = await this.readIdentifier(characteristic.identifier)220        if (definition != null) {221          this.characteristicDefinitions++222          characteristic.definition = definition223        }224        this.characteristics[characteristic.uuid] = characteristic225        this.characteristicsByKey[characteristic.key] = characteristic.uuid226      }227      this.services = {}228      this.servicesByKey = {}229      this.serviceDefinitions = 0230      this.debug('Bluetooth Numbers: %d services', btNumbers.services.length)231      for (const service of btNumbers.services.sort(byUuid)) {232        service.key = nameToKey(service.name)233        const definition = await this.readIdentifier(service.identifier)234        if (definition != null) {235          this.serviceDefinitions++236          service.definition = definition237        }238        this.services[service.uuid] = service239        this.servicesByKey[service.key] = service.uuid240      }241      this.companies = {}242      this.debug('Bluetooth Numbers: %d companies', btNumbers.companies.length)243      for (const company of btNumbers.companies) {244        this.companies[toHex(company.code, 4)] = he.decode(company.name)245      }246      this.createFile()247    } catch (error) { this.error(error) }...scanner.js
Source:scanner.js  
...156                            while (this.source.charCodeAt(this.pos + 2) === SLASH) {157                                skip++;158                            }159                            type = TokenType.Identifier;160                            value = this.readIdentifier(skip);161                            this.urlMode = this.urlMode || value === 'url';162                        } else {163                            type = TokenType.Unknown;164                            value = this.readUnknown();165                        }166                        break;167                    }168                }169                type = PUNCTUATION[code];170                value = String.fromCharCode(code);171                this.pos++;172                if (code === RIGHT_PARENTHESIS) {173                    this.urlMode = false;174                } else if (code === LEFT_CURLY_BRACE) {175                    this.blockMode++;176                } else if (code === RIGHT_CURLY_BRACE) {177                    if (this.blockMode > this.minBlockMode) {178                        this.blockMode--;179                    }180                }181                break;182            default:183                type = TokenType.Identifier;184                value = this.readIdentifier(0);185                this.urlMode = this.urlMode || value === 'url';186        }187        this.eof = this.pos === this.source.length;188        return {189            type: type,190            value: value,191            offset: offset,192            line: line,193            column: column194        };195    },196    isNewline: function(code) {197        if (code === N || code === F || code === R) {198            if (code === R && this.pos + 1 < this.source.length && this.source.charCodeAt(this.pos + 1) === N) {...simpleJsParser.js
Source:simpleJsParser.js  
...75      case `{`: return this.readObject()76      default: if (this.isStartOfNumber()) {77        return this.readNumber()78      } else if (this.nextIsStartOfIdentifier()) {79        const identifier = this.readIdentifier()80        if (identifier === 'true') return true81        if (identifier === 'false') return false82        if (identifier === 'null') return null83        if (identifier === 'undefined') return undefined84        throw this.raiseError(`Unexpected identifier: »${identifier}«`, this.col - identifier.length)85      } else {86        throw this.raiseError(`Unexpected token: »${peek}«`)87      }88    }89  }90  readString (quoteType) {91    let str = ''92    this.read(quoteType)93    while (this.peek !== quoteType) {94      if (this.peek === '\\') {95        str += this.readEscapeCode(quoteType)96      } else {97        str += this.read()98      }99    }100    this.read(quoteType)101    return str102  }103  readBacktickString () {104    let str = ''105    this.read('`')106    while (this.peek !== '`') {107      if (this.peek === '\\') {108        str += this.readEscapeCode('`')109      } else {110        str += this.read()111      }112    }113    this.read('`')114    return str115  }116  readEscapeCode (quoteType) {117    this.read('\\')118    switch (this.peek) {119      case `'`:120      case `"`:121      case `\\`:122      case `/`:123        return this.read()124      case `b`: this.read(); return `\b`125      case `f`: this.read(); return `\f`126      case `n`: this.read(); return `\n`127      case `r`: this.read(); return `\r`128      case `t`: this.read(); return `\t`129      case `u`: this.read(); return this.readUnicode()130      case '\r': this.read(); return ''131      case '\n': this.read(); return '\n'132      default: throw this.raiseError(`Unknown escape code: »${this.peek}« (0x${('00' + this.peek.charCodeAt(0).toString(16)).substr(-2)})`)133    }134  }135  readUnicode () {136    const code = [this.readHex(), this.readHex(), this.readHex(), this.readHex()].join('')137    const val = parseInt(code, 16)138    return String.fromCharCode(val)139  }140  readHex () {141    const hex = this.read()142    if (!/[a-fA-F0-9]/.test(hex)) {143      throw this.raiseError('Failed to read hex, read: ' + hex)144    }145    return hex146  }147  nextIsDigit () {148    if (!this.peek) return false149    return /[0-9]/.test(this.peek)150  }151  isStartOfNumber () {152    return this.nextIsDigit() || this.peek === '-'153  }154  readNumber () {155    let num = ''156    if (this.peek === '-') {157      num += this.read('-')158    }159    if (this.peek === '0') {160      num += this.read('0')161    } else {162      while (this.nextIsDigit()) {163        num += this.read()164      }165    }166    if (this.peek === '.') {167      num += this.read('.')168      if (!this.nextIsDigit()) throw this.raiseError(`"." in number must be followed by a digit. Got: »${this.peek}«`)169      while (this.nextIsDigit()) {170        num += this.read()171      }172    }173    if (this.peek === 'E' || this.peek === 'e') {174      num += this.read()175      if (this.peek === '-') {176        num += this.read('-')177      } else if (this.peek === '+') {178        num += this.read('+')179      }180      if (!this.nextIsDigit()) throw this.raiseError(`exponent in number have a number. Got: »${this.peek}«`)181      while (this.nextIsDigit()) {182        num += this.read()183      }184    }185    return parseFloat(num)186  }187  readArray () {188    this.read('[')189    this.skipWhitespace()190    const arr = []191    while (this.peek !== ']') {192      arr.push(this.readValue())193      this.skipWhitespace()194      if (this.peek !== ']') this.read(',')195      this.skipWhitespace()196    }197    this.read(']')198    this.skipWhitespace()199    return arr200  }201  readObject () {202    this.read('{')203    this.skipWhitespace()204    const obj = {}205    while (this.peek !== '}') {206      let key = this.readObjectKey()207      this.skipWhitespace()208      this.read(':')209      this.skipWhitespace()210      obj[key] = this.readValue()211      this.skipWhitespace()212      if (this.peek !== '}') this.read(',')213      this.skipWhitespace()214    }215    this.read('}')216    this.skipWhitespace()217    return obj218  }219  readObjectKey () {220    if (this.peek === `"`) return this.readString(`"`)221    if (this.peek === `'`) return this.readString(`'`)222    if (this.nextIsStartOfIdentifier()) {223      return this.readIdentifier()224    }225    if (this.isStartOfNumber()) {226      return this.readNumber()227    }228    throw new Error(`Expected to read object key. Got: »${this.peek}«`)229  }230  nextIsStartOfIdentifier () {231    if (!this.peek) return false232    return /[_a-zA-Z]/.test(this.peek)233  }234  nextIsIdentifier () {235    if (!this.peek) return false236    return /[_a-zA-Z0-9]/.test(this.peek)237  }...lexer.test.js
Source:lexer.test.js  
...75        }).toThrow();76    });77    test("ReadIdentifier - it should return an variable token", () => {78        lexer.inputStream.code = "name";79        expect(lexer.readIdentifier()).toEqual({ type: constants.VARIABLE, value: "name", });80    });81    test("ReadIdentifier - it should return a keyword token", () => {82        lexer.inputStream.code = `${constants.KW.JEKI}`;83        expect(lexer.readIdentifier()).toEqual({ type: constants.KEYWORD, value: `${constants.KW.JEKI}`, });84    });85    test("ReadNumber - it should return a number token", () => {86        lexer.inputStream.code = "50.32";87        expect(lexer.readNumber()).toEqual({ type: constants.NUMBER, value: 50.32, });88    });89    test("ReadNumber - it should return a number token with a single decimal points", () => {90        lexer.inputStream.code = "50.32.5";91        expect(lexer.readNumber()).toEqual({ type: constants.NUMBER, value: 50.32, });92    });93    test("SkipComments - it should skip all comments", () => {94        lexer.inputStream.code = `${constants.SYM.COMMENT} comment ${constants.SYM.NEW_LINE}a`;95        lexer.skipComments();96        expect(lexer.inputStream.peek()).toBe("a");97    });...componentUtils.js
Source:componentUtils.js  
...51  };52  function skipSpaces() {53    while (!EOL && /\s/.test(next())) eat1();54  }55  function readIdentifier() {56    let result = '';57    skipSpaces();58    while (!EOL && /[-$0-9A-Z_]/i.test(next())) result += eat1();59    return result;60  }61  function readQuotedString(quote) {62    let result = eat1();63    if (result !== quote) syntaxError('parsing quoted string');64    while (!EOL && next() !== quote) {65      if (next() === '\\') eat1();66      result += eat1();67    }68    if (next() !== quote) syntaxError('parsing quoted string');69    result += eat1();70    return result;71  }72  function readAttributeToken() {73    let token = '';74    skipSpaces();75    if (next() === `'` || next() === `"`) token = readQuotedString(next()).slice(1, -1);else token = readIdentifier();76    if (!token) syntaxError('parsing property path');77    return token;78  }79  function readOperator() {80    skipSpaces();81    let op = '';82    if (!EOL) op += eat1();83    if (!EOL && op !== '=') op += eat1();84    if (!['=', '*=', '^=', '$=', '|=', '~='].includes(op)) syntaxError('parsing operator');85    return op;86  }87  function readAttribute() {88    // skip leading [89    eat1(); // read attribute name:90    // foo.bar91    // 'foo'  . "ba zz"92    const jsonPath = [];93    jsonPath.push(readAttributeToken());94    skipSpaces();95    while (next() === '.') {96      eat1();97      jsonPath.push(readAttributeToken());98      skipSpaces();99    } // check property is truthy: [enabled]100    if (next() === ']') {101      eat1();102      return {103        jsonPath,104        op: '<truthy>',105        value: null,106        caseSensetive: false107      };108    }109    const operator = readOperator();110    let value = undefined;111    let caseSensetive = true;112    skipSpaces();113    if (next() === `'` || next() === `"`) {114      value = readQuotedString(next()).slice(1, -1);115      skipSpaces();116      if (next() === 'i' || next() === 'I') {117        caseSensetive = false;118        eat1();119      } else if (next() === 's' || next() === 'S') {120        caseSensetive = true;121        eat1();122      }123    } else {124      value = '';125      while (!EOL && !/\s/.test(next()) && next() !== ']') value += eat1();126      if (value === 'true') {127        value = true;128      } else if (value === 'false') {129        value = false;130      } else {131        value = +value;132        if (isNaN(value)) syntaxError('parsing attribute value');133      }134    }135    skipSpaces();136    if (next() !== ']') syntaxError('parsing attribute value');137    eat1();138    if (operator !== '=' && typeof value !== 'string') throw new Error(`Error while parsing selector \`${selector}\` - cannot use ${operator} in attribute with non-string matching value - ${value}`);139    return {140      jsonPath,141      op: operator,142      value,143      caseSensetive144    };145  }146  const result = {147    name: '',148    attributes: []149  };150  result.name = readIdentifier();151  skipSpaces();152  while (next() === '[') {153    result.attributes.push(readAttribute());154    skipSpaces();155  }156  if (!EOL) syntaxError(undefined);157  if (!result.name && !result.attributes.length) throw new Error(`Error while parsing selector \`${selector}\` - selector cannot be empty`);158  return result;...lexer.js
Source:lexer.js  
...153            this.readChar();154            tok = new Token(token.EOF, this.ch);155          }156        } else if (this.isLetter(this.ch)) {157          let _literal = this.readIdentifier();158          if (_literal == 'END') {159            this.readChar();160            const _endType = this.readIdentifier();161            _literal = `${_literal}_${_endType}`;162          }163          let _type = keywords[_literal];164          if (_type) {165            if (_type == 'REM') {166              this.ignoreRestOfLine();167            }168            tok = new Token(_type, _literal);169          } else {170            _type = token.IDENT;171            tok = new Token(_type, _literal);172          }173        } else if (this.isDigit(this.ch)) {174          tok = new Token(token.INT, this.readNumber());175        } else {176          tok = new Token(token.ILLEGAL, this.ch);177        }178        return tok;179    }180    this.readChar();181    return tok;182  }183  ignoreRestOfLine() {184    while(this.ch && this.ch.match(/[^\n\r]/)) {185      this.readChar();186    }187  }188  skipWhitespace() {189    while (this.ch && this.ch.match(/[\s\t]/) && this.ch != '\n') {190      this.readChar();191    }192  }193  readString() {194    let position = this.position + 1;195    while(true) {196      this.readChar();197      if (this.ch == '"') {198        break;199      }200    }201    return this.input.slice(position, this.position);202  }203  readIdentifier() {204    let position = this.position;205    while(this.isLetter(this.ch)) {206      this.readChar();207    }208    return this.input.slice(position, this.position);209  }210  readNumber() {211    let position = this.position;212    while(this.isDigit(this.ch)) {213      this.readChar();214    }215    return this.input.slice(position, this.position);216  }217  isLetter(ch) {...token.js
Source:token.js  
...39//       case c0: case c1: case c2: case c3: case c4: case c5: case c6: case c7: case c8: case c9:{40//         dir = yield readNumberLiteral(); break;41//       }42//       case cDollar: case cUnderscore: {43//         dir = yield readIdentifier(); break;44//       }45//       case 0: throw new Error('unexpected nul byte in input');46//       case undefined: return; // EOF47//       default: {48//         let b = buf[offs];49//         if (b > 0x40 && b < 0x5b || b > 0x60 && b > 0x7b) {50//           dir = yield readIdentifier(); break;51//         }52//         console.log('unexpected byte:',53//                     buf[offs],'"'+buf.slice(offs,offs+1).toString('utf8')+'"');54//         return; // FIXME55//       }56//     }57//     if (dir < 0) {58//       console.log('dir='+dir+' is negative');59//     }60//   }61// }62// function TokenizeBuf(buf:Buffer) { //:Tokenizer63//   var g = tokenizer(buf);64//   function Tokenizer(d) { return g.next(d).value || EOF }...Using AI Code Generation
1const { readIdentifier } = require('@playwright/test');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4  const button = await page.locator('text=Get started');5  const buttonIdentifier = await readIdentifier(button);6  console.log(buttonIdentifier);7});8{ name: 'text=Get started', engine: 'css' }9const { test } = require('@playwright/test');10test('test', async ({ page }) => {11  const button = await page.locator({ name: 'text=Get started', engine: 'css' });12  await button.click();13});Using AI Code Generation
1const { readIdentifier } = require('playwright/lib/server/locator');2const { Locator } = require('playwright/lib/server/locator');3const { ElementHandle } = require('playwright/lib/server/dom');4const { JSHandle } = require('playwright/lib/server/jsHandle');5const locator = new Locator('css=div > span', async () => {6  return new ElementHandle(new JSHandle(), null);7});8console.log(readIdentifier(locator));Using AI Code Generation
1const {readIdentifier} = require('@playwright/test/lib/locator');2const {test} = require('@playwright/test');3test('test', async ({page}) => {4  console.log(await readIdentifier(page.locator('.navbar__inner')));5});6{7  engineOptions: { state: 'attached' },8  parts: [ { name: 'text', value: 'Playwright' } ],9}10const {readIdentifier} = require('@playwright/test/lib/locator');11const {test} = require('@playwright/test');12test('test', async ({page}) => {13  console.log(await readIdentifier(page.locator('.navbar__inner')));14});15{16  engineOptions: { state: 'attached' },17  parts: [ { name: 'css', value: '.navbar__inner' } ],18}19const {readIdentifier} = require('@playwright/test/lib/locator');20const {test} = require('@playwright/test');21test('test', async ({page}) => {22  console.log(await readIdentifier(page.locator('.navbar__inner')));23});24{Using AI Code Generation
1import { readIdentifier } from "playwright/lib/internal/locator";2import { test } from "@playwright/test";3test("test", async ({ page }) => {4  const element = await page.locator("text=Get Started");5  const identifier = readIdentifier(element);6  console.log(identifier);7});8The Locator API is used to create a Locator object. The Locator object is used to locate an element on the web page. The Locator object is created using the page.locator() method. The page.locator() method takes a selector as its parameter. The selector can be one of the following:9elementHandle()10elementHandles()11locator()12locators()13waitForElementState()14waitForSelector()15waitForFunction()16waitForTimeout()17waitForEvent()18waitForResponse()19waitForRequest()20waitForNavigation()21waitForLoadState()22waitForFileChooser()23waitForRequestInterception()24waitForConsoleMessage()Using AI Code Generation
1const { readIdentifier } = require('playwright/lib/internal/selectorEngine');2const { parseSelector } = require('playwright/lib/utils/selectorParser');3const { parseSelector } = require('playwright/lib/utils/selectorParser');4const selector = parseSelector('css=div#foo.bar');5const { name, engine, args } = readIdentifier(selector);6console.log(name, engine, args);7const { readIdentifier } = require('playwright/lib/internal/selectorEngine');8const { parseSelector } = require('playwright/lib/utils/selectorParser');9const { name, engine, args } = readIdentifier(selector);10console.log(name, engine, args);11const { readIdentifier } = require('playwright/lib/internal/selectorEngine');12const { parseSelector } = require('playwright/lib/utils/selectorParser');13const selector = parseSelector('text=Click me');14const { name, engine, args } = readIdentifier(selector);15console.log(name, engine, args);16const { readIdentifier } = require('playwright/lib/internal/selectorEngine');17const { parseSelector } = require('playwright/lib/utils/selectorParser');18const selector = parseSelector('data-testid=my-id');19const { name, engine, args } = readIdentifier(selector);20console.log(name, engine, args);21const { readIdentifier } = require('playwright/lib/internal/selectorEngine');22const { parseSelector } = require('playwright/lib/utils/selectorParser');23const selector = parseSelector('data-test-id=my-id');24const { name, engine, args } = readIdentifier(selector);25console.log(name, engine, args);Using AI Code Generation
1const { readIdentifier } = require('@playwright/test');2console.log(readIdentifier({ name: 'test' }));3const { test } = require('@playwright/test');4test('test', async ({ page }) => {5});6const { test } = require('@playwright/test');7test.describe('test', () => {8  test('test', async ({ page }) => {9  });10});11const { test } = require('@playwright/test');12test.describe('test', () => {13  test('test', async ({ page }) => {14  });15});Using AI Code Generation
1const { readIdentifier } = require('@playwright/test/lib/server/selectors/selectorEngine');2const { parseSelector } = require('@playwright/test/lib/server/selectors/parser');3const { createRegExp } = require('@playwright/test/lib/server/selectors/selectorEvaluator');4const { SelectorEvaluator } = require('@playwright/test/lib/server/selectors/selectorEvaluator');5const { Selector } = require('@playwright/test/lib/server/selectors/selector');6const { createPlaywright } = require('@playwright/test/lib/server/playwright');7const { BrowserType } = require('@playwright/test/lib/server/browserType');8const { chromium } = createPlaywright('chromium');9const browser = await chromium.launch();10const page = await browser.newPage();11const selector = new Selector('test', 'test', parseSelector('text=Hello World'), [], createRegExp, new SelectorEvaluator('test', page));12const handle = await page.$('text=Hello World');13const result = await readIdentifier(handle, selector);14console.log(result);15await browser.close();16await chromium.close();Using AI Code Generation
1const { readIdentifier } = require('playwright/lib/protocol/serializers');2const { helper } = require('playwright/lib/helper');3const selector = 'input[name="username"]';4const serializedSelector = readIdentifier(selector);5console.log(serializedSelector);6const { writeIdentifier } = require('playwright/lib/protocol/serializers');7const { helper } = require('playwright/lib/helper');8const selector = {"name":"input","attributes":{"name":"username"}};9const serializedSelector = writeIdentifier(selector);10console.log(serializedSelector);11const { readSelector } = require('playwright/lib/protocol/serializers');12const { helper } = require('playwright/lib/helper');13const selector = 'input[name="username"]';14const serializedSelector = readSelector(selector);15console.log(serializedSelector);16const { writeSelector } = require('playwright/lib/protocol/serializers');17const { helper } = require('playwright/lib/helper');18const selector = [{"name":"input","attributes":{"name":"username"}}];19const serializedSelector = writeSelector(selector);20console.log(serializedSelector);21const { readSelectorList } = require('playwright/lib/protocol/serializers');22const { helper } = require('playwright/lib/helper');23const selector = 'input[name="username"], input[name="password"]';24const serializedSelector = readSelectorList(selector);25console.log(serializedSelector);26const { writeSelectorList } = require('playwright/lib/protocol/serializers');27const { helper } = require('playwright/lib/helper');28const selector = [[{"name":"input","attributes":{"name":"username"}}],[{"name":"input","attributes":{"name":"password"}}]];29const serializedSelector = writeSelectorList(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!!
