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);
How to run a list of test suites in a single file concurrently in jest?
Jest + Playwright - Test callbacks of event-based DOM library
Running Playwright in Azure Function
Is it possible to get the selector from a locator object in playwright?
firefox browser does not start in playwright
firefox browser does not start in playwright
Assuming you are not running test with the --runinband
flag, the simple answer is yes but it depends ????
There is a pretty comprehensive GitHub issue jest#6957 that explains certain cases of when tests are run concurrently or in parallel. But it seems to depend on a lot of edge cases where jest tries its best to determine the fastest way to run the tests given the circumstances.
To my knowledge there is no way to force jest to run in parallel.
Have you considered using playwright
instead of puppeteer with jest? Playwright has their own internally built testing library called @playwright/test
that is used in place of jest with a similar API. This library allows for explicitly defining test groups in a single file to run in parallel (i.e. test.describe.parallel
) or serially (i.e. test.describe.serial
). Or even to run all tests in parallel via a config option.
// parallel
test.describe.parallel('group', () => {
test('runs in parallel 1', async ({ page }) => {});
test('runs in parallel 2', async ({ page }) => {});
});
// serial
test.describe.serial('group', () => {
test('runs first', async ({ page }) => {});
test('runs second', async ({ page }) => {});
});
Check out the latest blogs from LambdaTest on this topic:
The web paradigm has changed considerably over the last few years. Web 2.0, a term coined way back in 1999, was one of the pivotal moments in the history of the Internet. UGC (User Generated Content), ease of use, and interoperability for the end-users were the key pillars of Web 2.0. Consumers who were only consuming content up till now started creating different forms of content (e.g., text, audio, video, etc.).
To understand the agile testing mindset, we first need to determine what makes a team “agile.” To me, an agile team continually focuses on becoming self-organized and cross-functional to be able to complete any challenge they may face during a project.
People love to watch, read and interact with quality content — especially video content. Whether it is sports, news, TV shows, or videos captured on smartphones, people crave digital content. The emergence of OTT platforms has already shaped the way people consume content. Viewers can now enjoy their favorite shows whenever they want rather than at pre-set times. Thus, the OTT platform’s concept of viewing anything, anytime, anywhere has hit the right chord.
One of the most important skills for leaders to have is the ability to prioritize. To understand how we can organize all of the tasks that must be completed in order to complete a project, we must first understand the business we are in, particularly the project goals. There might be several project drivers that stimulate project execution and motivate a company to allocate the appropriate funding.
In recent times, many web applications have been ported to mobile platforms, and mobile applications are also created to support businesses. However, Android and iOS are the major platforms because many people use smartphones compared to desktops for accessing web applications.
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!!