Best JavaScript code snippet using playwright-internal
interpreter.js
Source: interpreter.js
...313 CheckBinaryOpMagnetic([0x81], b, Opcode.OP_MUL, NegativeValtype(b))314 CheckBinaryOpMagnetic([], b, Opcode.OP_MUL, [])315 }316 const CheckBinaryOpMagnetic = function (a, b, op, expected) {317 const interp = evaluateScript(a, b, op)318 const result = [...interp.stack.pop()]319 result.should.to.deep.equal(expected)320 }321 const NegativeValtype = function (v) {322 let copy = v.slice()323 if (copy.length) {324 copy[copy.length - 1] ^= 0x80325 }326 // TODO: expose minimally encode as public method?327 return Interpreter._minimallyEncode(copy)328 }329 const evaluateScript = function (arraySig, arrayPubKey, op, funcDebug) {330 const interp = new Interpreter()331 interp.stepListener = funcDebug332 interp.script = new Script().add(Buffer.from(arraySig)).add(Buffer.from(arrayPubKey))333 interp.script.add(op)334 interp.flags = Interpreter.SCRIPT_VERIFY_P2SH |335 Interpreter.SCRIPT_ENABLE_MAGNETIC_OPCODES | Interpreter.SCRIPT_ENABLE_MONOLITH_OPCODES336 interp.evaluate()337 return interp338 }339 const debugScript = function (step, stack, altstack) {340 const script = (new Script()).add(step.opcode)341 // stack is array of buffers342 let stackTop = '>'343 for (let item in stack.reverse()) {344 console.log(`Step ${step.pc}: ${script}:${stackTop}${stack[item].toString('hex')}`)345 stackTop = ' '346 }347 }348 const toBitpattern = function (binaryString) {349 return parseInt(binaryString, 2).toString(16).padStart(8, '0')350 }351 describe('#Empty and null script', function () {352 it('Empty buffer should have value 0x00 in script', function () {353 const s = new Script().add(Buffer.from([]))354 // script does not render anything so it appears invisible355 s.toString().should.equal('')356 // yet there is a script chunk there357 s.chunks.length.should.equal(1)358 s.chunks[0].opcodenum.should.equal(0)359 })360 it('Zero value (0x00) buffer should have value 0x01 0x00 in script', function () {361 const s = new Script().add(Buffer.from([0x00]))362 s.toString().should.equal('1 0x00')363 s.chunks.length.should.equal(1)364 s.chunks[0].opcodenum.should.equal(1)365 })366 })367 describe('#NegativeValType', function () {368 it('should pass all tests', function () {369 // Test zero values370 new Script().add(Buffer.from(NegativeValtype([]))).should.to.deep.equal(new Script().add(Buffer.from([])))371 new Script().add(Buffer.from(NegativeValtype([0x00]))).should.to.deep.equal(new Script().add(Buffer.from([])))372 new Script().add(Buffer.from(NegativeValtype([0x80]))).should.to.deep.equal(new Script().add(Buffer.from([])))373 new Script().add(Buffer.from(NegativeValtype([0x00, 0x00]))).should.to.deep.equal(new Script().add(Buffer.from([])))374 new Script().add(Buffer.from(NegativeValtype([0x00, 0x80]))).should.to.deep.equal(new Script().add(Buffer.from([])))375 // Non-zero values376 NegativeValtype([0x01]).should.to.deep.equal([0x81])377 NegativeValtype([0x81]).should.to.deep.equal([0x01])378 NegativeValtype([0x02, 0x01]).should.to.deep.equal([0x02, 0x81])379 NegativeValtype([0x02, 0x81]).should.to.deep.equal([0x02, 0x01])380 NegativeValtype([0xff, 0x02, 0x01]).should.to.deep.equal([0xff, 0x02, 0x81])381 NegativeValtype([0xff, 0x02, 0x81]).should.to.deep.equal([0xff, 0x02, 0x01])382 NegativeValtype([0xff, 0xff, 0x02, 0x01]).should.to.deep.equal([0xff, 0xff, 0x02, 0x81])383 NegativeValtype([0xff, 0xff, 0x02, 0x81]).should.to.deep.equal([0xff, 0xff, 0x02, 0x01])384 // Should not be overly-minimized385 NegativeValtype([0xff, 0x80]).should.to.deep.equal([0xff, 0x00])386 NegativeValtype([0xff, 0x00]).should.to.deep.equal([0xff, 0x80])387 })388 })389 describe('#OP_LSHIFT tests from bitcoind', function () {390 it('should not shift when no n value', function () {391 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [], Opcode.OP_LSHIFT)392 console.log(interp.script)393 const result = interp.stack.pop()394 result.toString('hex').should.equal(toBitpattern('10011111000100011111010101010101'))395 })396 it('should shift left 1', function () {397 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x01], Opcode.OP_LSHIFT)398 const result = interp.stack.pop()399 result.toString('hex').should.equal(toBitpattern('00111110001000111110101010101010'))400 })401 it('should shift left 2', function () {402 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x02], Opcode.OP_LSHIFT)403 const result = interp.stack.pop()404 result.toString('hex').should.equal(toBitpattern('01111100010001111101010101010100'))405 })406 it('should shift left 3', function () {407 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x03], Opcode.OP_LSHIFT)408 const result = interp.stack.pop()409 result.toString('hex').should.equal(toBitpattern('11111000100011111010101010101000'))410 })411 it('should shift left 4', function () {412 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x04], Opcode.OP_LSHIFT)413 const result = interp.stack.pop()414 result.toString('hex').should.equal(toBitpattern('11110001000111110101010101010000'))415 })416 it('should shift left 5', function () {417 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x05], Opcode.OP_LSHIFT)418 const result = interp.stack.pop()419 result.toString('hex').should.equal(toBitpattern('11100010001111101010101010100000'))420 })421 it('should shift left 6', function () {422 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x06], Opcode.OP_LSHIFT)423 const result = interp.stack.pop()424 result.toString('hex').should.equal(toBitpattern('11000100011111010101010101000000'))425 })426 it('should shift left 7', function () {427 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x07], Opcode.OP_LSHIFT)428 const result = interp.stack.pop()429 result.toString('hex').should.equal(toBitpattern('10001000111110101010101010000000'))430 })431 it('should shift left 08', function () {432 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x08], Opcode.OP_LSHIFT)433 const result = interp.stack.pop()434 result.toString('hex').should.equal(toBitpattern('00010001111101010101010100000000'))435 })436 it('should shift left 9', function () {437 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x09], Opcode.OP_LSHIFT)438 const result = interp.stack.pop()439 result.toString('hex').should.equal(toBitpattern('00100011111010101010101000000000'))440 })441 it('should shift left 0A', function () {442 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0A], Opcode.OP_LSHIFT)443 const result = interp.stack.pop()444 result.toString('hex').should.equal(toBitpattern('01000111110101010101010000000000'))445 })446 it('should shift left 0B', function () {447 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0B], Opcode.OP_LSHIFT)448 const result = interp.stack.pop()449 result.toString('hex').should.equal(toBitpattern('10001111101010101010100000000000'))450 })451 it('should shift left 0C', function () {452 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0C], Opcode.OP_LSHIFT)453 const result = interp.stack.pop()454 result.toString('hex').should.equal(toBitpattern('00011111010101010101000000000000'))455 })456 it('should shift left 0D', function () {457 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0D], Opcode.OP_LSHIFT)458 const result = interp.stack.pop()459 result.toString('hex').should.equal(toBitpattern('00111110101010101010000000000000'))460 })461 it('should shift left 0E', function () {462 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0E], Opcode.OP_LSHIFT)463 const result = interp.stack.pop()464 result.toString('hex').should.equal(toBitpattern('01111101010101010100000000000000'))465 })466 it('should shift left 0F', function () {467 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0F], Opcode.OP_LSHIFT)468 const result = interp.stack.pop()469 result.toString('hex').should.equal(toBitpattern('11111010101010101000000000000000'))470 })471 })472 describe('#OP_RSHIFT tests from bitcoind', function () {473 it('should not shift when no n value', function () {474 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [], Opcode.OP_RSHIFT)475 const result = interp.stack.pop()476 result.toString('hex').should.equal(toBitpattern('10011111000100011111010101010101'))477 })478 it('should shift right 1', function () {479 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x01], Opcode.OP_RSHIFT)480 const result = interp.stack.pop()481 result.toString('hex').should.equal(toBitpattern('01001111100010001111101010101010'))482 })483 it('should shift right 2', function () {484 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x02], Opcode.OP_RSHIFT)485 const result = interp.stack.pop()486 result.toString('hex').should.equal(toBitpattern('00100111110001000111110101010101'))487 })488 it('should shift right 3', function () {489 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x03], Opcode.OP_RSHIFT)490 const result = interp.stack.pop()491 result.toString('hex').should.equal(toBitpattern('00010011111000100011111010101010'))492 })493 it('should shift right 4', function () {494 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x04], Opcode.OP_RSHIFT)495 const result = interp.stack.pop()496 result.toString('hex').should.equal(toBitpattern('00001001111100010001111101010101'))497 })498 it('should shift right 5', function () {499 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x05], Opcode.OP_RSHIFT)500 const result = interp.stack.pop()501 result.toString('hex').should.equal(toBitpattern('00000100111110001000111110101010'))502 })503 it('should shift right 6', function () {504 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x06], Opcode.OP_RSHIFT)505 const result = interp.stack.pop()506 result.toString('hex').should.equal(toBitpattern('00000010011111000100011111010101'))507 })508 it('should shift right 7', function () {509 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x07], Opcode.OP_RSHIFT)510 const result = interp.stack.pop()511 result.toString('hex').should.equal(toBitpattern('00000001001111100010001111101010'))512 })513 it('should shift right 08', function () {514 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x08], Opcode.OP_RSHIFT)515 const result = interp.stack.pop()516 result.toString('hex').should.equal(toBitpattern('00000000100111110001000111110101'))517 })518 it('should shift right 9', function () {519 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x09], Opcode.OP_RSHIFT)520 const result = interp.stack.pop()521 result.toString('hex').should.equal(toBitpattern('00000000010011111000100011111010'))522 })523 it('should shift right 0A', function () {524 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0A], Opcode.OP_RSHIFT)525 const result = interp.stack.pop()526 result.toString('hex').should.equal(toBitpattern('00000000001001111100010001111101'))527 })528 it('should shift right 0B', function () {529 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0B], Opcode.OP_RSHIFT)530 const result = interp.stack.pop()531 result.toString('hex').should.equal(toBitpattern('00000000000100111110001000111110'))532 })533 it('should shift right 0C', function () {534 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0C], Opcode.OP_RSHIFT)535 const result = interp.stack.pop()536 result.toString('hex').should.equal(toBitpattern('00000000000010011111000100011111'))537 })538 it('should shift right 0D', function () {539 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0D], Opcode.OP_RSHIFT)540 const result = interp.stack.pop()541 result.toString('hex').should.equal(toBitpattern('00000000000001001111100010001111'))542 })543 it('should shift right 0E', function () {544 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0E], Opcode.OP_RSHIFT)545 const result = interp.stack.pop()546 result.toString('hex').should.equal(toBitpattern('00000000000000100111110001000111'))547 })548 it('should shift right 0F', function () {549 const interp = evaluateScript([0x9F, 0x11, 0xF5, 0x55], [0x0F], Opcode.OP_RSHIFT)550 const result = interp.stack.pop()551 result.toString('hex').should.equal(toBitpattern('00000000000000010011111000100011'))552 })553 })554 describe('#OP_MUL tests from bitcoind', function () {555 it('OP_MUL tests', function () {556 CheckMul([0x05], [0x06], [0x1E])557 CheckMul([0x05], [0x26], [0xBE, 0x00])558 CheckMul([0x45], [0x26], [0x3E, 0x0A])559 CheckMul([0x02], [0x56, 0x24], [0xAC, 0x48])560 CheckMul([0x05], [0x26, 0x03, 0x32], [0xBE, 0x0F, 0xFA, 0x00])561 CheckMul([0x06], [0x26, 0x03, 0x32, 0x04], [0xE4, 0x12, 0x2C, 0x19])562 CheckMul([0xA0, 0xA0], [0xF5, 0xE4], [0x20, 0xB9, 0xDD, 0x0C]) // -20A0*-64F5=0CDDB920563 CheckMul([0x05, 0x26], [0x26, 0x03, 0x32], [0xBE, 0xB3, 0x71, 0x6D, 0x07])...
core.spec.js
Source: core.spec.js
...8describe('Core specs', () => {9 describe('Simple tags', () => {10 it('The compiler generates a sourcemap and an output', async function() {11 const result = compile(getFixture('my-component.riot'))12 const output = evaluateScript(result.code)13 const sourcemapConsumer = await new SourceMapConsumer(result.map)14 expect(sourcemapConsumer.hasContentsOfAllSources()).to.be.ok15 expect(result.code).to.be.a('string')16 expect(result.map).to.be.not.an('undefined')17 expect(result.meta).to.be.an('object')18 expect(result.meta.tagName).to.be.equal('my-component')19 expect(output.default).to.have.all.keys('exports', 'css', 'template', 'name')20 sourcemapConsumer.destroy()21 })22 it('TypeScript script syntax are supported', function() {23 expect(() => compile(getFixture('typescript-script-type.riot'))).to.not.throw()24 })25 it('String attributes should not be removed from the root node (https://github.com/riot/riot/issues/2761)', () => {26 const result = compile(getFixture('static-attributes.riot'))27 const output = evaluateScript(result.code)28 const { bindingsData } = output.default.template(template, expressionTypes, bindingTypes)29 const staticAttribute = bindingsData[0].expressions[0]30 expect(staticAttribute).to.be.ok31 expect(staticAttribute.name).to.be.equal('class')32 expect(staticAttribute.evaluate()).to.be.equal('foo bar')33 })34 it('Tags without css and javascript can be properly compiled', async function() {35 const result = compile(getFixture('only-html.riot'))36 const output = evaluateScript(result.code)37 const sourcemapConsumer = await new SourceMapConsumer(result.map)38 expect(sourcemapConsumer.hasContentsOfAllSources()).to.be.ok39 expect(result.code).to.be.a('string')40 expect(result.map).to.be.not.an('undefined')41 expect(result.meta).to.be.an('object')42 expect(result.meta.tagName).to.be.equal('only-html')43 expect(output.default.css).to.be.not.ok44 expect(output.default.exports).to.be.not.ok45 expect(output.default.template).to.be.ok46 })47 it('Tags with weird namespaces can output properly css names', async function() {48 const result = compile(getFixture('weird-namespace.riot'))49 const output = evaluateScript(result.code)50 expect(output.default.css).to.be.a('string')51 expect(output.default.css).to.include('weird\\:namespace')52 expect(output.default.css).to.include('content: \'\\263c\';')53 })54 it('It can compile an entire HTML Page', async function() {55 const result = compile(getFixture('root-app.riot'))56 expect(result.code).to.match(/<script/)57 })58 it('Tags without html and javascript can be properly compiled', async function() {59 const result = compile(getFixture('only-css.riot'))60 const output = evaluateScript(result.code)61 expect(result.code).to.be.a('string')62 expect(result.map).to.be.not.an('undefined')63 expect(result.meta).to.be.an('object')64 expect(result.meta.tagName).to.be.equal('only-css')65 expect(output.default.css).to.be.ok66 expect(output.default.exports).to.be.not.ok67 expect(output.default.template).to.be.not.ok68 })69 it('Tags without html and css can be properly compiled', async function() {70 const result = compile(getFixture('only-javascript.riot'))71 const output = evaluateScript(result.code)72 const sourcemapConsumer = await new SourceMapConsumer(result.map)73 expect(sourcemapConsumer.hasContentsOfAllSources()).to.be.ok74 expect(result.code).to.be.a('string')75 expect(result.map).to.be.not.an('undefined')76 expect(result.meta).to.be.an('object')77 expect(result.meta.tagName).to.be.equal('only-javascript')78 expect(output.default.css).to.be.not.ok79 expect(output.default.exports).to.be.ok80 expect(output.default.template).to.be.not.ok81 })82 it('Tags with empty template with attributes can be properly compiled (https://github.com/riot/riot/issues/2931)', async function() {83 const result = compile(getFixture('empty-template-with-attributes.riot'))84 const output = evaluateScript(result.code)85 const sourcemapConsumer = await new SourceMapConsumer(result.map)86 expect(sourcemapConsumer.hasContentsOfAllSources()).to.be.ok87 expect(result.code).to.be.a('string')88 expect(result.map).to.be.not.an('undefined')89 expect(result.meta).to.be.an('object')90 expect(result.meta.tagName).to.be.equal('empty-template-with-attributes')91 expect(output.default.css).to.be.not.ok92 expect(output.default.exports).to.be.ok93 expect(output.default.template).to.be.ok94 })95 it('Tags with empty <script> generate a sourcemap and an output', async function() {96 const result = compile(getFixture('empty-script.riot'))97 const output = evaluateScript(result.code)98 const sourcemapConsumer = await new SourceMapConsumer(result.map)99 expect(sourcemapConsumer.hasContentsOfAllSources()).to.be.ok100 expect(result.code).to.be.a('string')101 expect(result.map).to.be.not.an('undefined')102 expect(result.meta).to.be.an('object')103 expect(result.meta.tagName).to.be.equal('empty-script')104 expect(output.default).to.have.all.keys('exports', 'css', 'template', 'name')105 sourcemapConsumer.destroy()106 })107 it('Tags with empty <style> generate a sourcemap and an output', async function() {108 const result = compile(getFixture('empty-style.riot'))109 const output = evaluateScript(result.code)110 const sourcemapConsumer = await new SourceMapConsumer(result.map)111 expect(sourcemapConsumer.hasContentsOfAllSources()).to.be.ok112 expect(result.code).to.be.a('string')113 expect(result.map).to.be.not.an('undefined')114 expect(result.meta).to.be.an('object')115 expect(result.meta.tagName).to.be.equal('empty-style')116 expect(output.default).to.have.all.keys('exports', 'css', 'template', 'name')117 sourcemapConsumer.destroy()118 })119 it('The each directives on custom tags will be properly generate the attributes', function() {120 const result = compile(getFixture('each-and-events.riot'))121 expect(result.code.match(/'expr/g), 'nested templates shouldn\'t have selectors').to.have.length(1)122 expect(result.code).to.match(/EVENT/)123 })124 it('Dynamic import is supported', function() {125 expect(() => compile(getFixture('dynamic-import.riot'))).to.not.throw()126 })127 it('Multiline expressions are supported - https://github.com/riot/riot/issues/2889', function() {128 expect(() => compile(getFixture('multiline-expressions.riot'))).to.not.throw()129 })130 it('Object expressions get properly computed - https://github.com/riot/compiler/issues/155', function() {131 const result = compile(getFixture('object-expression.riot'))132 const output = evaluateScript(result.code)133 const { bindingsData } = output.default.template(template, expressionTypes, bindingTypes)134 expect(bindingsData).to.be.ok135 })136 it('Multiple root nodes are not supported', function() {137 expect(() => compile(getFixture('multiple-root-nodes-script.riot'))).to.throw(/Multiple/)138 expect(() => compile(getFixture('multiple-root-nodes-css.riot'))).to.throw(/Multiple/)139 expect(() => compile(getFixture('multiple-root-nodes-html.riot'))).to.throw(/Multiple/)140 expect(() => compile(getFixture('multiple-root-nodes-comment.riot'))).to.not.throw()141 })142 it('Nested svg tags should not throw (https://github.com/riot/riot/issues/2723)', function() {143 expect(() => compile(getFixture('svg-loader.riot'))).to.not.throw()144 })145 it('Text expressions on the same nodes should be merged', function() {146 const result = compile(getFixture('comments-component.riot'))147 const output = evaluateScript(result.code)148 const { bindingsData } = output.default.template(template, expressionTypes, bindingTypes)149 const expressions = bindingsData[0].expressions150 expect(result.code).to.not.match(/<!--/)151 expect(expressions).to.have.length(1)152 expect(expressions[0].evaluate()).to.be.equal('above the commentbelow the comment')153 })154 it('Text expressions on the same nodes should be merged if the comments=true option is set', function() {155 const result = compile(getFixture('comments-component.riot'), {156 comments: true157 })158 const output = evaluateScript(result.code)159 const { bindingsData } = output.default.template(template, expressionTypes, bindingTypes)160 expect(result.code).to.match(/<!--/)161 expect(bindingsData[0].expressions).to.have.length(2)162 })163 })164 describe('Preprocessed tags', () => {165 before(() => {166 registerPreprocessor('css', 'sass', sassPreprocessor)167 registerPreprocessor('template', 'pug', (code, { file }) => {168 return {169 code: pug.render(code, {170 filename: file171 }),172 map: {}173 }174 })175 })176 after(() => {177 unregister('css', 'sass')178 unregister('template', 'pug')179 })180 it('The Pug and sass preprocessors work as expected', async function() {181 const input = getFixture('pug-component.pug')182 const result = compile(input, {183 template: 'pug',184 file: 'pug-component.pug'185 })186 const output = evaluateScript(result.code)187 const sourcemapConsumer = await new SourceMapConsumer(result.map)188 expect(result.map.sources).to.have.length(1)189 expect(result.map.sourcesContent[0]).to.be.equal(input)190 expect(sourcemapConsumer.hasContentsOfAllSources()).to.be.ok191 expect(result.code).to.be.a('string')192 expect(result.map).to.be.not.an('undefined')193 expect(result.meta).to.be.an('object')194 expect(result.meta.tagName).to.be.equal('pug-component')195 expect(output.default).to.have.all.keys('exports', 'css', 'template', 'name')196 expect(output.default.exports.foo).to.be.ok197 })198 })...
supplemental.js
Source: supplemental.js
...18 () => {19 const agent = new Agent();20 setSurroundingAgent(agent);21 const realm = new ManagedRealm();22 const result = realm.evaluateScript('debugger;');23 assert.strictEqual(result.Value, Value.undefined);24 },25 () => {26 const agent = new Agent({27 onDebugger() {28 return new Value(42);29 },30 });31 setSurroundingAgent(agent);32 const realm = new ManagedRealm();33 const result = realm.evaluateScript('debugger;');34 assert.strictEqual(result.Value.numberValue(), 42);35 },36 () => {37 const agent = new Agent();38 setSurroundingAgent(agent);39 const realm = new ManagedRealm();40 const result = realm.evaluateScript(`\41function x() { throw new Error('owo'); }42function y() { x(); }43try {44 y();45} catch (e) {46 e.stack;47}48`);49 assert.strictEqual(result.Value.stringValue(), `\50Error: owo51 at x (<anonymous>:1:32)52 at y (<anonymous>:2:16)53 at <anonymous>:4:3`);54 },55 () => {56 const agent = new Agent();57 setSurroundingAgent(agent);58 const realm = new ManagedRealm();59 const result = realm.evaluateScript(`\60async function x() { await 1; throw new Error('owo'); }61async function y() { await x(); }62y().catch((e) => e.stack);63`);64 assert.strictEqual(result.Value.PromiseResult.stringValue(), `\65Error: owo66 at async x (<anonymous>:1:47)67 at async y (<anonymous>:2:28)`);68 },69 () => {70 const agent = new Agent();71 setSurroundingAgent(agent);72 const realm = new ManagedRealm();73 const result = realm.evaluateScript(`\74function x() { Reflect.get(); }75try {76 x();77} catch (e) {78 e.stack;79}80`);81 assert.strictEqual(result.Value.stringValue(), `\82TypeError: undefined is not an object83 at get (native)84 at x (<anonymous>:1:16)85 at <anonymous>:3:3`);86 },87 () => {88 const agent = new Agent();89 setSurroundingAgent(agent);90 const realm = new ManagedRealm();91 const result = realm.evaluateScript(`\92function Y() { throw new Error('owo'); }93function x() { new Y(); }94try {95 x();96} catch (e) {97 e.stack;98}99`);100 assert.strictEqual(result.Value.stringValue(), `\101Error: owo102 at new Y (<anonymous>:1:32)103 at x (<anonymous>:2:20)104 at <anonymous>:4:3`);105 },106 () => {107 const agent = new Agent();108 setSurroundingAgent(agent);109 const realm = new ManagedRealm();110 const result = realm.evaluateScript(`\111let e;112new Promise(() => {113 e = new Error('owo');114});115e.stack;116`);117 assert.strictEqual(result.Value.stringValue(), `\118Error: owo119 at <anonymous> (<anonymous>:3:17)120 at new Promise (native)121 at <anonymous>:2:13`);122 },123 () => {124 const agent = new Agent({125 features: ['WeakRefs'],126 });127 setSurroundingAgent(agent);128 const realm = new ManagedRealm();129 const result = realm.evaluateScript(`130 const w = new WeakRef({});131 Promise.resolve()132 .then(() => {133 if (typeof w.deref() !== 'object') {134 throw new Error();135 }136 })137 .then(() => {138 if (typeof w.deref() !== 'undefined') {139 throw new Error();140 }141 })142 .then(() => 'pass');143 `);144 assert.strictEqual(result.Value.PromiseResult.stringValue(), 'pass');145 },146 () => {147 const agent = new Agent({148 features: ['WeakRefs'],149 });150 setSurroundingAgent(agent);151 const realm = new ManagedRealm();152 realm.scope(() => {153 const module = realm.createSourceTextModule('test.mjs', `154 const w = new WeakRef({});155 globalThis.result = Promise.resolve()156 .then(() => {157 if (typeof w.deref() !== 'object') {158 throw new Error('should be object');159 }160 })161 .then(() => {162 if (typeof w.deref() !== 'undefined') {163 throw new Error('should be undefined');164 }165 })166 .then(() => 'pass');167 `);168 module.Link();169 module.Evaluate();170 const result = Get(realm.GlobalObject, new Value('result'));171 assert.strictEqual(result.Value.PromiseResult.stringValue(), 'pass');172 });173 },174 () => {175 const agent = new Agent({176 features: FEATURES.map((f) => f.name),177 });178 setSurroundingAgent(agent);179 const { realm } = test262realm.createRealm();180 realm.scope(() => {181 CreateDataProperty(182 realm.GlobalObject,183 new Value('fail'),184 new Value(([path]) => {185 throw new Error(`${path.stringValue()} did not have a section`);186 }),187 );188 const targets = [];189 Object.entries(realm.Intrinsics)190 .forEach(([k, v]) => {191 targets.push(CreateArrayFromList([new Value(k), v]));192 });193 CreateDataProperty(194 realm.GlobalObject,195 new Value('targets'),196 CreateArrayFromList(targets),197 );198 });199 const result = realm.evaluateScript(`200'use strict';201{202 const targets = globalThis.targets;203 delete globalThis.targets;204 const fail = globalThis.fail;205 delete globalThis.fail;206 const topQueue = new Set();207 const scanned = new Set();208 const scan = (ns, path) => {209 if (scanned.has(ns)) {210 return;211 }212 scanned.add(ns);213 if (typeof ns === 'function') {214 if ($262.spec(ns) === undefined) {215 fail(path);216 }217 }218 if (typeof ns !== 'function' && (typeof ns !== 'object' || ns === null)) {219 return;220 }221 const descriptors = Object.getOwnPropertyDescriptors(ns);222 Reflect.ownKeys(descriptors)223 .forEach((name) => {224 const desc = descriptors[name];225 const p = typeof name === 'symbol'226 ? path + '[Symbol(' + name.description + ')]'227 : path + '.' + name;228 if ('value' in desc) {229 if (!topQueue.has(desc.value)) {230 scan(desc.value, p);231 }232 } else {233 if (!topQueue.has(desc.get)) {234 scan(desc.get, p);235 }236 if (!topQueue.has(desc.set)) {237 scan(desc.set, p);238 }239 }240 });241 };242 targets.forEach((t) => {243 topQueue.add(t[1]);244 });245 targets.forEach((t) => {246 scan(t[1], t[0]);247 });248}249 `);250 assert.strictEqual(result.Value, Value.undefined);251 },252 () => {253 const agent1 = new Agent();254 const agent2 = new Agent();255 assert.strictEqual(agent1.executionContextStack.pop, agent2.executionContextStack.pop,256 "The 'agent.executionContextStack.pop' method is identical for every execution context stack.");257 },258 () => {259 const agent = new Agent();260 setSurroundingAgent(agent);261 const realm = new ManagedRealm();262 realm.evaluateScript(`263 var foo;264 eval(\`265 var foo;266 var bar;267 var deleteMe;268 \`);269 delete deleteMe;270 `);271 const varNames = new Set();272 for (const name of realm.GlobalEnv.VarNames) {273 assert(!varNames.has(name.stringValue()), 'Every member of `realm.[[GlobalEnv]].[[VarNames]]` should be unique.');274 varNames.add(name.stringValue());275 }276 assert(!varNames.has('deleteMe'), "`realm.[[GlobalEnv]].[[VarNames]]` shouldn't have 'deleteMe'.");...
rectification.js
Source: rectification.js
...21 },22 });23 //è¿åå表24 appcan.button("#nav-left", "btn-act",function() {25 appcan.window.evaluateScript({26 name: 'reform',27 scriptContent: 'vm.ResetUpScroll()'28 });29 closeMultiPages([30 'reform-temporary',31 'punish-detail',32 'reform-rectification-details'33 ]);34 appcan.window.evaluateScript({35 name: 'punish',36 scriptContent: 'vm.ResetUpScroll()'37 });38 //æ¸
é¤è¯¦æ
页ç¼ååæ®µ39 var reformArr = ['patrol-status', 'patrol-reformId', 'patrol-role','patrol-alertSuccess','patrol-reform-headerNav'];40 reformArr.forEach(function(name){41 appcan.locStorage.remove(name);42 });43 });4445 appcan.ready(function() {46 //æå¼åæµ®å¨çªå£47 createPopover('reform-rectification-details-content','reform-rectification-details-content.html','');4849 //éç½®æå®å¼¹åºçªå£çé«åº¦50 window.onorientationchange = window.onresize = function(){51 var titleHeight = parseInt($('#Header').height()),52 pageHeight = parseInt($('#Page').height()),53 pageWidth = parseInt($('#Page').width());54 appcan.window.resizePopover({55 name: 'reform-rectification-details-content',56 url: 'reform-rectification-details-content.html',57 left: 0,58 top: titleHeight,59 width: pageWidth,60 height: pageHeight-titleHeight61 });62 };6364 //鲿¢æé®ç¹å»ä¸¤æ¬¡65 appcan.window.subscribe('patrol-clickBtn', function (msg) {66 if(msg == 'PassCheckClick'){67// $(".btnFooter").attr("disabled", true);68 $('.btnFooter').css({69 'opacity':0.670 })71 }else if(msg == 'noPassCheckClick'){72// $(".btnFooter").removeAttr("disabled");73 $('.btnFooter').css({74 'opacity':175 })76 }77 });7879 //å¤çIOSå峿»å¨å
³é80 var platForm = appcan.locStorage.getVal("platForm"); //æ¯å®åè¿æ¯IOS81 var isSupport = true;82 if(platForm =='1'){83 isSupport = false84 }85 var param = {86 isSupport: isSupport87 };88 uexWindow.setIsSupportSwipeCallback(JSON.stringify(param));89 //å峿»å¨çç嬿¹æ³90 uexWindow.onSwipeRight = function() {91 appcan.window.evaluateScript({92 name: 'reform',93 scriptContent: 'vm.ResetUpScroll()'94 });95 closeMultiPages([96 'reform-temporary',97 'punish-detail',98 'reform-rectification-details'99 ]);100 appcan.window.evaluateScript({101 name: 'punish',102 scriptContent: 'vm.ResetUpScroll()'103 });104 //æ¸
é¤è¯¦æ
页ç¼ååæ®µ105 var reformArr = ['patrol-status', 'patrol-reformId', 'patrol-role','patrol-alertSuccess','patrol-reform-headerNav'];106 reformArr.forEach(function(name){107 appcan.locStorage.remove(name);108 });109 };110//ä¸è½æ»å¨ç111 //var params = {112 // enable:0113 //};114 //var paramStr = JSON.stringify(params);115 //uexWindow.setSwipeCloseEnable(paramStr);116117 //å¤çå®åææºè¿åé®ç¹å»è¿å主页é¢118 uexWindow.setReportKey(0, 1);119 uexWindow.onKeyPressed = function(keyCode) {120 if(keyCode == 0) {121 appcan.window.evaluateScript({122 name: 'reform',123 scriptContent: 'vm.ResetUpScroll()'124 });125 closeMultiPages([126 'reform-temporary',127 'punish-detail',128 'reform-rectification-details'129 ]);130 appcan.window.evaluateScript({131 name: 'punish',132 scriptContent: 'vm.ResetUpScroll()'133 });134 //æ¸
é¤è¯¦æ
页ç¼ååæ®µ135 var reformArr = ['patrol-status', 'patrol-reformId', 'patrol-role','patrol-alertSuccess','patrol-reform-headerNav'];136 reformArr.forEach(function(name){137 appcan.locStorage.remove(name);138 });139 }140 };141 })142143144})($);
...
presenter.js
Source: presenter.js
...73 presenter.getMaxScore = function () {74 return presenter.configuration.scoring.maxScore;75 };76 presenter.getErrorCount = function () {77 presenter.evaluateScript();78 return presenter.configuration.scoring.errors;79 };80 presenter.getScore = function () {81 presenter.evaluateScript();82 return presenter.configuration.scoring.score;83 };84 presenter.evaluateScript = function () {85 if (!presenter.configuration.script) {86 return;87 }88 try {89 eval(presenter.configuration.script);90 } catch (error) {91 Helpers.alertErrorMessage(error, "Custom Score - problem occurred while running scripts!");92 }93 };94 presenter.evaluate = function () {95 presenter.evaluateScript();96 return {97 score: presenter.configuration.scoring.score,98 errors: presenter.configuration.scoring.errors99 };100 };101 presenter.executeCommand = function (name, params) {102 var commands = {103 'evaluate': presenter.evaluate,104 'setScore': presenter.setScoreCommand,105 'setErrors': presenter.setErrorsCommand106 };107 return Commands.dispatch(commands, name, params, presenter);108 };109 presenter.setShowErrorsMode = function () {110 presenter.evaluateScript();111 };112 presenter.setScoreCommand = function (params) {113 presenter.setScore(params[0]);114 };115 presenter.setErrorsCommand = function (params) {116 presenter.setErrors(params[0]);117 };118 presenter.getState = function () {119 return JSON.stringify({120 score: presenter.configuration.scoring.score,121 errors: presenter.configuration.scoring.errors122 });123 };124 presenter.setState = function (state) {...
CommandsLogicTests.js
Source: CommandsLogicTests.js
1TestCase("[Custom Scoring] Commands logic - setters", {2 setUp: function () {3 this.presenter = AddonCustom_Scoring_create();4 this.presenter.configuration = {5 scoring: {6 score: 0,7 errors: 0,8 maxScore: 59 }10 };11 },12 'test proper score set': function () {13 this.presenter.setScore(5);14 assertEquals(5, this.presenter.configuration.scoring.score);15 assertEquals(0, this.presenter.configuration.scoring.errors);16 },17 'test score value is string': function () {18 this.presenter.setScore('3');19 assertEquals(3, this.presenter.configuration.scoring.score);20 assertEquals(0, this.presenter.configuration.scoring.errors);21 },22 'test invalid score value': function () {23 this.presenter.setScore('number');24 assertEquals(0, this.presenter.configuration.scoring.score);25 assertEquals(0, this.presenter.configuration.scoring.errors);26 },27 'test score value is bigger than max score': function () {28 this.presenter.setScore(6);29 assertEquals(0, this.presenter.configuration.scoring.score);30 assertEquals(0, this.presenter.configuration.scoring.errors);31 },32 'test proper errors set': function () {33 this.presenter.setErrors(5);34 assertEquals(5, this.presenter.configuration.scoring.errors);35 assertEquals(0, this.presenter.configuration.scoring.score);36 },37 'test errors value is string': function () {38 this.presenter.setErrors('3');39 assertEquals(3, this.presenter.configuration.scoring.errors);40 assertEquals(0, this.presenter.configuration.scoring.score);41 },42 'test errors value': function () {43 this.presenter.setErrors('number');44 assertEquals(0, this.presenter.configuration.scoring.errors);45 assertEquals(0, this.presenter.configuration.scoring.score);46 }47});48TestCase("[Custom Scoring] Commands logic - getters", {49 setUp: function () {50 this.presenter = AddonCustom_Scoring_create();51 this.presenter.configuration = {52 scoring: {53 score: 2,54 errors: 3,55 maxScore: 556 }57 };58 sinon.stub(this.presenter, 'evaluateScript');59 this.presenter.evaluateScript.returns()60 },61 tearDown: function () {62 this.presenter.evaluateScript.restore();63 },64 'test get score': function () {65 assertEquals(2, this.presenter.getScore());66 assertTrue(this.presenter.evaluateScript.calledOnce);67 },68 'test get error count': function () {69 assertEquals(3, this.presenter.getErrorCount());70 assertTrue(this.presenter.evaluateScript.calledOnce);71 }...
appShell.js
Source: appShell.js
...4 fetch(location.pathname + location.search + (currentSearch ? "&" : "?") + "fragment=true").then(function fetchRespose(response) {5 response.text().then(function(text) {6 document.querySelectorAll(".pageContent")[0].innerHTML = text;7 document.querySelectorAll(".scriptString:not(.processed)").forEach(function(e, i) {8 evaluateScript(e);9 });10 Promise.all([...document.querySelectorAll(".scriptElement")].map(e => {11 return loadScript(e.src);12 })).then( () => {13 14 })15 });16 });17}18loadPage();19/////////////////20evaluateScript = function evaluateScript(ele) {21 var script = ele.innerHTML;22 eval(script);23};24loadScript = function loadScript(url) {25 return new Promise((resolve, reject) => {26 var script = document.createElement('script');27 script.async = true;28 script.src = url;29 script.onload = resolve;30 script.onerror = reject;31 document.head.appendChild(script);32 });...
app.js
Source: app.js
1;2(function($E, global) {3 $E.evaluateScript = function(windowname, popoverName, script, pageId) {4 if (windowname != '') {5 pageId = $E.strEncode(windowname);6 }7 var win = document.getElementById(pageId);8 if (win) {9 if (win.parentName) {10 win = document.getElementById(win.parentName);11 }12 var msg = {13 type: 'evaluateScript',14 data: script15 }16 msg = JSON.stringify(msg);17 if (popoverName != '') {18 var popId = $E.strEncode(popoverName);19 var pop = win.querySelector("#" + popId);20 if (pop) {21 pop.querySelector("#" + popId + "iframe").contentWindow.postMessage(msg, '*');22 }23 } else {24 win.querySelector("#" + pageId + "iframe").contentWindow.postMessage(msg, '*');25 }26 }27 }...
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright.chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const title = await page.evaluate(() => document.title);7 console.log(title);8 await browser.close();9})();10const playwright = require('playwright');11(async () => {12 const browser = await playwright.chromium.launch();13 const context = await browser.newContext();14 const page = await context.newPage();15 const handle = await page.evaluateHandle(() => document.body);16 console.log(handle);17 await browser.close();18})();19const playwright = require('playwright');20(async () => {21 const browser = await playwright.chromium.launch();22 const context = await browser.newContext();23 const page = await context.newPage();24 const title = await page.evaluateExpression('document.title');25 console.log(title);26 await browser.close();27})();28const playwright = require('playwright');29(async () => {30 const browser = await playwright.chromium.launch();31 const context = await browser.newContext();32 const page = await context.newPage();33 const handle = await page.evaluateExpressionHandle('document.body');34 console.log(handle);35 await browser.close();36})();37const playwright = require('playwright');38(async () => {39 const browser = await playwright.chromium.launch();40 const context = await browser.newContext();41 const page = await context.newPage();42 const element = await page.querySelector('input');43 console.log(element);44 await browser.close();45})();46const playwright = require('playwright');47(async () => {48 const browser = await playwright.chromium.launch();
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 for (const browserType of ['chromium', 'webkit', 'firefox']) {4 const browser = await playwright[browserType].launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const title = await page.evaluate(() => document.title);8 console.log(title);9 await browser.close();10 }11})();12const playwright = require('playwright');13(async () => {14 for (const browserType of ['chromium', 'webkit', 'firefox']) {15 const browser = await playwright[browserType].launch();16 const context = await browser.newContext();17 const page = await context.newPage();18 const title = await page.evaluate(() => document.title);19 console.log(title);20 await browser.close();21 }22})();23await page.click("#myElement");24await page.waitForSelector("#myElement", {state: "visible"});25await page.waitForSelector("#myElement", {state: "attached"});26await page.waitForSelector("#myElement", {state: "visible", timeout: 0});27await page.waitForSelector("#myElement", {state: "attached", timeout: 0});28await page.waitForSelector("#myElement", {state: "visible", timeout: 30000});29await page.waitForSelector("#myElement", {state: "attached", timeout: 30000});30await page.evaluate(() => {31 document.querySelector("#myElement").scrollIntoView();32});33await page.evaluate(() => {34 document.querySelector("#myElement").scrollIntoView();35});36await page.click("#myElement");37await page.waitForSelector("#
Using AI Code Generation
1const playwright = require('playwright');2(async () => {3 const browser = await playwright.chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const result = await page.evaluate(() => {7 return 5 + 6;8 });9 await browser.close();10})();11const playwright = require('playwright');12(async () => {13 const browser = await playwright.chromium.launch();14 const context = await browser.newContext();15 const page = await context.newPage();16 const result = await page.evaluate(() => {17 return 5 + 6;18 });19 await browser.close();20})();21const playwright = require('playwright');22(async () => {23 const browser = await playwright.chromium.launch();24 const context = await browser.newContext();25 const page = await context.newPage();26 const result = await page.evaluate(() => {27 return 5 + 6;28 });29 await browser.close();30})();31const playwright = require('playwright');32(async () => {33 const browser = await playwright.chromium.launch();34 const context = await browser.newContext();35 const page = await context.newPage();36 const result = await page.evaluate(() => {37 return 5 + 6;38 });39 await browser.close();40})();
Using AI Code Generation
1const { evaluateScript } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');2const { context } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');3const { page } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');4const { frame } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');5const { elementHandle } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');6const result = await evaluateScript(context, page, frame, elementHandle, `return 1+1`);7const { evaluateExpression } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');8const { context } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');9const { page } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');10const { frame } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');11const { elementHandle } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');12const result = await evaluateExpression(context, page, frame, elementHandle, `1+1`);13const { evaluateExpressionHandle } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');14const { context } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');15const { page } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');16const { frame } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');17const { elementHandle } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');18const result = await evaluateExpressionHandle(context, page, frame, elementHandle, `document.body`);19const { evaluateExpressionHandle } = require('playwright-core/lib/server/supplements/recorder/recorderSupplement');20const { context } = require('
Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const result = await page.evaluate(() => {7 return {width: window.innerWidth, height: window.innerHeight};8 });9 await browser.close();10})();11const {chromium} = require('playwright');12(async () => {13 const browser = await chromium.launch();14 const context = await browser.newContext();15 const page = await context.newPage();16 const result = await page.evaluate(() => {17 return {width: window.innerWidth, height: window.innerHeight};18 });19 await browser.close();20})();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 const result = await page.evaluate(() => {27 return {width: window.innerWidth, height: window.innerHeight};28 });29 await browser.close();30})();31const {chromium} = require('playwright');32(async () => {33 const browser = await chromium.launch();34 const context = await browser.newContext();35 const page = await context.newPage();36 const result = await page.evaluate(() => {37 return {width: window.innerWidth, height: window.innerHeight};38 });39 await browser.close();
Using AI Code Generation
1const playwright = require('playwright');2const { evaluateScript } = require('playwright/lib/server/evaluateScript');3async function main() {4 const browser = await playwright.chromium.launch({ headless: false });5 const context = await browser.newContext();6 const page = await context.newPage();7 const result = await evaluateScript(page, 'document.title');8 console.log(result);9 await browser.close();10}11main();12const playwright = require('playwright');13const { evaluateScript } = require('playwright/lib/server/evaluateScript');14async function main() {15 const browser = await playwright.chromium.launch({ headless: false });16 const context = await browser.newContext();17 const page = await context.newPage();18 const result = await evaluateScript(page, 'document.title');19 console.log(result);20 await browser.close();21}22main();23const playwright = require('playwright');24const { evaluateScript } = require('playwright/lib/server/evaluateScript');25async function main() {26 const browser = await playwright.chromium.launch({ headless: false });27 const context = await browser.newContext();28 const page = await context.newPage();29 const result = await evaluateScript(page, 'document.title');30 console.log(result);31 await browser.close();32}33main();34const playwright = require('playwright');35const { evaluateScript } = require('playwright/lib/server/evaluateScript');36async function main() {37 const browser = await playwright.chromium.launch({ headless: false });38 const context = await browser.newContext();39 const page = await context.newPage();40 const result = await evaluateScript(page, 'document.title');41 console.log(result);42 await browser.close();43}44main();45const playwright = require('playwright');46const { evaluateScript } = require('playwright/lib/server/
Using AI Code Generation
1const { evaluateScript } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');2const { context } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');3const page = await context.newPage();4await evaluateScript(page, 'console.log("Hello World")');5const { evaluateScript } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');6const { context } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');7const page = await context.newPage();8await evaluateScript(page, 'console.log("Hello World")');9const { evaluateScript } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');10const { context } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');11const page = await context.newPage();12await evaluateScript(page, 'console.log("Hello World")');13const { evaluateScript } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');14const { context } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');15const page = await context.newPage();16await evaluateScript(page, 'console.log("Hello World")');17const { evaluateScript } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');18const { context } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');19const page = await context.newPage();20await evaluateScript(page, 'console.log("Hello World")');21const { evaluateScript } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');22const { context } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');23const page = await context.newPage();24await evaluateScript(page, 'console.log("Hello World")');25const { evaluateScript } = require('playwright/lib/server/supplements/recorder/recorderSupplement.js');
Using AI Code Generation
1const {evaluateScript} = require('playwright/lib/internal/evaluator');2const {createJSHandle} = require('playwright/lib/internal/JSHandle');3const {createExecutionContext} = require('playwright/lib/internal/ExecutionContext');4const {createFrame} = require('playwright/lib/internal/FrameManager');5const {createPage} = require('playwright/lib/internal/Page');6const {createBrowserContext} = require('playwright/lib/internal/BrowserContext');7const {createBrowser} = require('playwright/lib/internal/Browser');8const browser = createBrowser();9const context = createBrowserContext(browser);10const page = createPage(context);11const frame = createFrame(page, 'frameId', null);12const executionContext = createExecutionContext(frame);13const windowHandle = createJSHandle(executionContext, 'window');14const result = evaluateScript(windowHandle, 'window.location.href');15console.log(result);16browser.close();
Using AI Code Generation
1const { evaluateScript } = require("playwright/lib/internal/evaluateScript");2const result = evaluateScript(3 "const a = 1; const b = 2; a + b;",4);5console.log(result);6const { evaluateScript } = require("playwright/lib/internal/evaluateScript");7const result = evaluateScript(8 "const a = 1; const b = 2; a + b;",9);10console.log(result);11const { evaluateScript } = require("playwright/lib/internal/evaluateScript");12const result = evaluateScript(13 "const a = 1; const b = 2; a + b;",14);15console.log(result);16const { evaluateScript } = require("playwright/lib/internal/evaluateScript");17const result = evaluateScript(18 "const a = 1; const b = 2; a + b;",19);20console.log(result);21const { evaluateScript } = require("playwright/lib/internal/evaluateScript");22const result = evaluateScript(23 "const a = 1; const b = 2; a + b;",24);25console.log(result);26const { evaluateScript } = require("playwright/lib/internal/evaluateScript");27const result = evaluateScript(28 "const a = 1; const b = 2; a + b;",29);30console.log(result);31const { evaluateScript } = require("playwright/lib/internal/evaluateScript");32const result = evaluateScript(33 "const a = 1; const b = 2; a + b;",34);35console.log(result);36const { evaluateScript } = require("playwright/lib/internal/evaluateScript");37const result = evaluateScript(38 "const a = 1; const b = 2; a +
firefox browser does not start in playwright
How to run a list of test suites in a single file concurrently in jest?
Is it possible to get the selector from a locator object in playwright?
Jest + Playwright - Test callbacks of event-based DOM library
Running Playwright in Azure Function
firefox browser does not start in playwright
I found the error. It was because of some missing libraries need. I discovered this when I downgraded playwright to version 1.9 and ran the the code then this was the error msg:
(node:12876) UnhandledPromiseRejectionWarning: browserType.launch: Host system is missing dependencies!
Some of the Universal C Runtime files cannot be found on the system. You can fix
that by installing Microsoft Visual C++ Redistributable for Visual Studio from:
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
Full list of missing libraries:
vcruntime140.dll
msvcp140.dll
Error
at Object.captureStackTrace (D:\Projects\snkrs-play\node_modules\playwright\lib\utils\stackTrace.js:48:19)
at Connection.sendMessageToServer (D:\Projects\snkrs-play\node_modules\playwright\lib\client\connection.js:69:48)
at Proxy.<anonymous> (D:\Projects\snkrs-play\node_modules\playwright\lib\client\channelOwner.js:64:61)
at D:\Projects\snkrs-play\node_modules\playwright\lib\client\browserType.js:64:67
at BrowserType._wrapApiCall (D:\Projects\snkrs-play\node_modules\playwright\lib\client\channelOwner.js:77:34)
at BrowserType.launch (D:\Projects\snkrs-play\node_modules\playwright\lib\client\browserType.js:55:21)
at D:\Projects\snkrs-play\index.js:4:35
at Object.<anonymous> (D:\Projects\snkrs-play\index.js:7:3)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:12876) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:12876) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
A list of missing libraries was provided. After successful installments, firefox ran fine. I upgraded again to version 1.10 and firefox still works.
Check out the latest blogs from LambdaTest on this topic:
Lack of training is something that creates a major roadblock for a tester. Often, testers working in an organization are all of a sudden forced to learn a new framework or an automation tool whenever a new project demands it. You may be overwhelmed on how to learn test automation, where to start from and how to master test automation for web applications, and mobile applications on a new technology so soon.
The purpose of developing test cases is to ensure the application functions as expected for the customer. Test cases provide basic application documentation for every function, feature, and integrated connection. Test case development often detects defects in the design or missing requirements early in the development process. Additionally, well-written test cases provide internal documentation for all application processing. Test case development is an important part of determining software quality and keeping defects away from customers.
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.
The sky’s the limit (and even beyond that) when you want to run test automation. Technology has developed so much that you can reduce time and stay more productive than you used to 10 years ago. You needn’t put up with the limitations brought to you by Selenium if that’s your go-to automation testing tool. Instead, you can pick from various test automation frameworks and tools to write effective test cases and run them successfully.
Agile project management is a great alternative to traditional methods, to address the customer’s needs and the delivery of business value from the beginning of the project. This blog describes the main benefits of Agile for both the customer and the business.
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!!