Best JavaScript code snippet using playwright-internal
interface.js
Source: interface.js
1$(document).ready(() => {2 $('label').popover();3});4/**5 * Launches the parsing process by calling the parser with the data entered in the interface,6 * and processing the results.7 */8function parse() {9 const textToParse = $('#lojban-text-area').val();10 $('#result-row').slideDown();11 const start = new Date().getTime();12 subparse('Camxes: Beta CBM CKT', '#parser-camxes-beta-cbm-ckt', camxes_beta_cbm_ckt, textToParse);13 subparse('Camxes: Beta CBM', '#parser-camxes-beta-cbm', camxes_beta_cbm, textToParse);14 subparse('Camxes: Beta', '#parser-camxes-beta', camxes_beta, textToParse);15 subparse('Camxes: Experimental', '#parser-camxes-exp', camxes_exp, textToParse);16 subparse('Camxes: Standard', '#parser-camxes', camxes, textToParse);17 subparse('Maftufa 1.15', '#parser-maftufa-1-15', maftufa_1_15, textToParse);18 subparse('Maltufa 0.9', '#parser-maltufa-0-9', maltufa_0_9, textToParse);19 subparse('Maltufa 1.15', '#parser-maltufa-1-15', maltufa_1_15, textToParse);20 subparse('Zantufa 0.9', '#parser-zantufa-0-9', zantufa_0_9, textToParse);21 subparse('Zantufa 0.61', '#parser-zantufa-0-61', zantufa_0_61, textToParse);22 subparse('Zantufa 1.3', '#parser-zantufa-1-3', zantufa_1_3, textToParse);23 const end = new Date().getTime();24 $('#time-label').html(`ï¼å¦çæéï¼${end - start}ããªç§)`);25}26function subparse(parserName, parserId, parserFunction, textToParse) {27 parserTabId = `${parserId}-tab`;28 try {29 let parseResult = parserFunction.parse(textToParse)30 parseResult = removeMorphology(parseResult);31 parseResult = removeSpaces(parseResult);32 const simplified = simplifyTree(parseResult);33 numberSumti(simplified);34 if (parseResult) {35 tokens = [];36 findTokens(parseResult, tokens);37 const $parser = $(parserId);38 showBoxes(simplified, $parser);39 }40 $(parserTabId).html(`${parserName} â
`);41 } catch (e) {42 if (e.name && (e.name === 'SyntaxError' || e.name === 'minajimpe')) {43 $(parserTabId).html(`${parserName} â`);44 $(parserId).html('<span class="muted">Boxes</span>');45 showSyntaxError(e, textToParse, $(parserId));46 } else {47 $(parserTabId).html(`${parserName} ð`);48 // eslint-disable-next-line no-console49 console.error(e);50 }51 }52}53/**54 * Finds all tokens in the resulting parse tree, and puts them in the tokens array.55 */56function findTokens(parseResult, tokens) {57 if (parseResult instanceof Array) {58 if (parseResult.length === 2 && isString(parseResult[0]) && isString(parseResult[1])) {59 tokens.push(parseResult[1]);60 } else {61 parseResult.forEach(child => findTokens(parseResult[child], tokens));62 }63 }64}65/**66 * Shows the boxes in the interface.67 */68function showBoxes(simplified, $element) {69 let output = '';70 output += constructBoxesOutput(simplified[0], 0);71 /* output += "<p>Legend: ";72 var types = ["sentence", "prenex", "selbri", "sumti"];73 for (var type in types) {74 output += "<div class=\"" + boxClassForType({ type: types[type] }) + "\">" + types[type] + "</div>";75 }76 output += "</p>"; */77 $element.html(output);78}79function constructBoxesOutput(parseResult, depth) {80 // precaution against infinite recursion; this should not actually happen of course81 if (depth > 3000) {82 return '<b>too much recursion :-(</b>';83 }84 // if we get null, just print that85 if (parseResult === null) {86 return '<i>(none?)</i>';87 }88 // if we get undefined, just print that89 if (!parseResult) {90 return '<i>(undefined?)</i>';91 }92 let output = '';93 if (parseResult.word) {94 output += '<div class="box box-terminal">';95 // we have a terminal96 output += ` <b>${getVlasiskuLink(parseResult.word)}</b> `;97 output += ` ${parseResult.type} `;98 if (grosses[parseResult.word]) {99 output += `<span class="translation"> ${grosses[parseResult.word]} </span>`;100 } else {101 output += '䏿';102 }103 output += '</div>';104 } else {105 // we have a non-terminal106 output += `<div class="${boxClassForType(parseResult)}">`;107 if (visiable(parseResult)) {108 output += '<div class="box box-type">';109 if (parseResult.sumtiPlace) {110 output += `第${parseResult.sumtiPlace}ã¹ã ãã£ï¼sumti x${parseResult.sumtiPlace}ï¼`;111 } else if (parseResult.type) {112 output += parseResult.type;113 } else {114 output += '<div class="box box-undefined"></div>';115 }116 output += '</div>';117 } 118 parseResult.children.forEach(child => {119 output += constructBoxesOutput(child, depth + 1);120 })121 output += '</div>';122 }123 return output;124}125function boxClassForType(parseResult) {126 if (parseResult.type === 'æç« ï¼textï¼') {127 return 'box box-text';128 }129 if (parseResult.type === 'æï¼sentenceï¼') {130 return 'box box-sentence';131 }132 if (parseResult.type === '第xã¹ã ãã£ï¼sumti xï¼') {133 if (parseResult.sumtiPlace > 5) {134 return 'box box-sumti6';135 } if (parseResult.sumtiPlace === 'fai') {136 return 'box box-sumti-fai';137 }138 return `box box-sumti${parseResult.sumtiPlace}`;139 }140 if (parseResult.type === 'æ³å¶ã¹ã ãã£ï¼sumti modalï¼') {141 return 'box box-modal';142 }143 if (parseResult.type === 'ã¹ã ãã£ï¼sumtiï¼') {144 return 'box box-sumti';145 }146 if (parseResult.type === 'ã»ã«ããªï¼selbriï¼') {147 return 'box box-selbri';148 }149 if (parseResult.type === 'å é ï¼prenexï¼') {150 return 'box box-prenex';151 }152 if (!visiable(parseResult)) {153 return 'box box-not-shown';154 }155 return 'box box-thin';156}157function visiable(parseResult) {158 return !(/ï¼é表示ï¼/.test(parseResult.type) || (/ã³ã¬ã¯ã·ã§ã³|ä¸ä½/.test(parseResult.type) && parseResult.children.length <= 1));159}160/**161 * Shows a syntax error in the interface.162 */163function showSyntaxError(e, textToParse, $element) {164 const output = `${'<div class="alert">' +165 '<p><b>Syntax error</b> on line <b>'}${e.line166 }</b>, at column <b>${e.column167 }</b>: ${e.message168 }</p>` +169 `<p class="error-sentence">${generateErrorPosition(e, textToParse)170 }</p>${generateFixes(e)171 }</div>`;172 $element.html(output);173}174/**175 * Generates the text sample that shows the error position.176 */177function generateErrorPosition(e, textToParse) {178 // "mi vau <span class=\"error-marker\">▴</span> do cusku ..." +179 let before = textToParse.substring(e.offset - 20, e.offset);180 let after = textToParse.substring(e.offset + 0, e.offset + 20);181 if (e.offset > 20) {182 before = `...${before}`;183 }184 if (e.offset < textToParse.length - 20) {185 after += '...';186 }187 return `${before}<span class="error-marker">▴</span>${after}`;188}189function generateFixes(e) {190 if (!e.fix) {191 // return "<p><i>No quick fixes available.</i></p>";192 return '';193 }194 let fixes = '<p>Quick fixes:<ul>';195 e.fix.forEach(fix => {196 fixes += '<li>';197 if (fix.fixFunction) {198 fixes += '<a>';199 fixes += fix.name;200 fixes += '</a>';201 } else {202 fixes += fix.name;203 }204 fixes += '</li>';205 });206 fixes += '</ul></p>';207 return fixes;208}209/**210 * Shows the translation in the interface.211 */212function showTranslation(parseResult, text, $element) {213 let output = '<p class="muted">This translation feature tries to give an approximate translation of the Lojban text into English. However, it does only work for a few sentences as of now. (Try [mi gleki] or something simple like that...)</p>';214 // var translation = translate(parse);215 const translation = 'Sorry! Translation is switched off at the moment, to prevent crashes in the other parts :-(';216 output += `<center><big>${translation}</big></center>`;217 $element.html(output);218}219// Auxiliary220function isString(s) {221 return typeof (s) === 'string' || s instanceof String;222}223function getVlasiskuLink(word) {224 return `<a class="vlasisku-link" href="http://vlasisku.lojban.org/vlasisku/${word}">${outputWord(word, getSelectedMode())}</a>`;225}226function outputWord(word, mode) {227 if (mode === 1) { // Latin mode228 return addDotsToWord(word);229 } if (mode === 2) { // Cyrillic mode230 return wordToCyrillic(addDotsToWord(word));231 } if (mode === 3) { // Tengwar mode232 return wordToTengwar(addDotsToWord(word));233 } if (mode === 4) { // Hiragana mode234 return wordToHiragana(addDotsToWord(word));235 }236 return null;237}238function getSelectedMode() {239 if ($('#latin-button').hasClass('active')) {240 return 1;241 } if ($('#cyrillic-button').hasClass('active')) {242 return 2;243 } if ($('#tengwar-button').hasClass('active')) {244 return 3;245 } if ($('#hiragana-button').hasClass('active')) {246 return 4;247 }248 return null;249}250function endsWith(str, suffix) {251 return str.indexOf(suffix, str.length - suffix.length) !== -1;...
spyDetailMessageParser.test.js
Source: spyDetailMessageParser.test.js
1import fs from 'fs';2import path from 'path';3import { assert } from 'chai';4import { CODES } from '../lib/GameElements';5import { spyDetailMessageParser } from '../lib/GameClient/parsers/spyDetailMessageParser';6const messagePage = fs.readFileSync(path.resolve('testPages', 'spyMessageDetail.html'), { encoding: 'utf8' });7const messageFullPage = fs.readFileSync(path.resolve('testPages', 'spyMessageFullDetail.html'), { encoding: 'utf8' });8const messageEmptyPage = fs.readFileSync(path.resolve('testPages', 'spyMessageEmptyDetail.html'), { encoding: 'utf8' });9describe(__filename, () => {10 it('Should parse the test page', (done) => {11 const parseResult = spyDetailMessageParser(messagePage);12 assert.equal(parseResult.coordinates.galaxy, 2);13 assert.equal(parseResult.coordinates.system, 56);14 assert.equal(parseResult.coordinates.planet, 6);15 assert.equal(parseResult.resources.metal, 48977);16 assert.equal(parseResult.resources.crystal, 37323);17 assert.equal(parseResult.resources.deuterium, 13697);18 assert.equal(parseResult.resources.energy, 1658);19 assert.equal(parseResult.fleet[CODES.SMALL_CARGO], 6);20 assert.equal(parseResult.fleet[CODES.LIGHT_FIGHTER], 10);21 assert.equal(parseResult.fleet[CODES.HEAVY_FIGHTER], 8);22 assert.equal(parseResult.fleet[CODES.ESPIONAGE_PROBE], 1);23 assert.equal(parseResult.fleet[CODES.SOLAR_SATELLITE], 12);24 assert.equal(parseResult.defences[CODES.ROCKET_LAUNCHER], 4);25 assert.equal(parseResult.defences[CODES.LIGHT_LASER], 3);26 assert.equal(parseResult.buildings[CODES.METAL_MINE], 12);27 assert.equal(parseResult.buildings[CODES.CRYSTAL_MINE], 13);28 assert.equal(parseResult.buildings[CODES.DEUTERIUM_SYNTHESIZER], 12);29 assert.equal(parseResult.buildings[CODES.SOLAR_PLANT], 14);30 assert.equal(parseResult.buildings[CODES.FUSION_REACTOR], 4);31 assert.equal(parseResult.buildings[CODES.ROBOTICS_FACTORY], 5);32 assert.equal(parseResult.buildings[CODES.SHIPYARD], 4);33 assert.equal(parseResult.buildings[CODES.METAL_STORAGE], 4);34 assert.equal(parseResult.buildings[CODES.CRYSTAL_STORAGE], 2);35 assert.equal(parseResult.buildings[CODES.DEUTERIUM_TANK], 2);36 assert.equal(parseResult.buildings[CODES.RESEARCH_LAB], 5);37 assert.equal(parseResult.buildings[CODES.SPACE_DOCK], 3);38 assert.equal(parseResult.buildings[CODES.MISSILE_SILO], 1);39 assert(!parseResult.technologies);40 done();41 });42 it('Should parse the complete message', (done) => {43 const parseResult = spyDetailMessageParser(messageFullPage);44 assert.equal(parseResult.coordinates.galaxy, 2);45 assert.equal(parseResult.coordinates.system, 21);46 assert.equal(parseResult.coordinates.planet, 8);47 assert.equal(parseResult.resources.metal, 50136);48 assert.equal(parseResult.resources.crystal, 9967);49 assert.equal(parseResult.resources.deuterium, 4944);50 assert.equal(parseResult.resources.energy, 1505);51 assert.equal(parseResult.fleet[CODES.CRUISER], 6);52 assert.equal(parseResult.defences[CODES.ROCKET_LAUNCHER], 47);53 assert.equal(parseResult.buildings[CODES.METAL_MINE], 15);54 assert.equal(parseResult.buildings[CODES.CRYSTAL_MINE], 12);55 assert.equal(parseResult.buildings[CODES.DEUTERIUM_SYNTHESIZER], 11);56 assert.equal(parseResult.buildings[CODES.SOLAR_PLANT], 15);57 assert.equal(parseResult.buildings[CODES.FUSION_REACTOR], 5);58 assert.equal(parseResult.buildings[CODES.ROBOTICS_FACTORY], 4);59 assert.equal(parseResult.buildings[CODES.SHIPYARD], 6);60 assert.equal(parseResult.buildings[CODES.METAL_STORAGE], 6);61 assert.equal(parseResult.buildings[CODES.CRYSTAL_STORAGE], 4);62 assert.equal(parseResult.buildings[CODES.DEUTERIUM_TANK], 3);63 assert.equal(parseResult.buildings[CODES.RESEARCH_LAB], 6);64 assert.equal(parseResult.buildings[CODES.SPACE_DOCK], 2);65 assert.equal(parseResult.technologies[CODES.ESPIONAGE_TECHNOLOGY], 4);66 assert.equal(parseResult.technologies[CODES.COMPUTER_TECHNOLOGY], 2);67 assert.equal(parseResult.technologies[CODES.WEAPONS_TECHNOLOGY], 1);68 assert.equal(parseResult.technologies[CODES.ARMOUR_TECHNOLOGY], 6);69 assert.equal(parseResult.technologies[CODES.ENERGY_TECHNOLOGY], 6);70 assert.equal(parseResult.technologies[CODES.COMBUSTION_DRIVE], 4);71 assert.equal(parseResult.technologies[CODES.IMPULSE_DRIVE], 4);72 assert.equal(parseResult.technologies[CODES.LASER_TECHNOLOGY], 7);73 assert.equal(parseResult.technologies[CODES.ION_TECHNOLOGY], 2);74 assert.equal(parseResult.technologies[CODES.ASTROPHYSICS], 1);75 done();76 });77 it('Should parse the empty message', (done) => {78 const parseResult = spyDetailMessageParser(messageEmptyPage);79 assert.equal(parseResult.coordinates.galaxy, 2);80 assert.equal(parseResult.coordinates.system, 38);81 assert.equal(parseResult.coordinates.planet, 4);82 assert.equal(parseResult.resources.metal, 5151);83 assert.equal(parseResult.resources.crystal, 5075);84 assert.equal(parseResult.resources.deuterium, 0);85 assert.equal(parseResult.resources.energy, 0);86 assert(parseResult.fleet);87 assert(parseResult.defences);88 assert(parseResult.buildings);89 assert(parseResult.technologies);90 done();91 });...
resourcesPageParser.test.js
Source: resourcesPageParser.test.js
1import fs from 'fs';2import path from 'path';3import { assert } from 'chai';4import { resourcesPageParser } from '../lib/GameClient/parsers/resourcesPageParser';5import { CODES } from '../lib/GameElements';6const resourcesPage = fs.readFileSync(path.resolve('testPages', 'resources.html'), { encoding: 'utf8' });7const resourcesPageProduction = fs.readFileSync(path.resolve('testPages', 'resourcesProduction.html'), { encoding: 'utf8' });8describe(__filename, () => {9 it('Should parse the test page', (done) => {10 const parseResult = resourcesPageParser(resourcesPage);11 assert.equal(parseResult.timestamp.getTime(), 1477610828);12 assert.equal(parseResult.planets.length, 1);13 assert.equal(parseResult.planet.planetName, 'Homeworld');14 assert.equal(parseResult.planet.planetId, '33628551');15 assert.equal(parseResult.planet.buildingCountdown, 0);16 assert.equal(parseResult.planet.planetType, 'planet');17 assert.equal(parseResult.planet.coordinates.galaxy, 2);18 assert.equal(parseResult.planet.coordinates.system, 31);19 assert.equal(parseResult.planet.coordinates.planet, 12);20 assert.equal(parseResult.planet.resources.metal, 65);21 assert.equal(parseResult.planet.resources.crystal, 261);22 assert.equal(parseResult.planet.resources.deuterium, 0);23 assert.equal(parseResult.planet.resources.energy, 47);24 assert.equal(parseResult.planet.resourceBuildings[CODES.METAL_MINE], 4);25 assert.equal(parseResult.planet.resourceBuildings[CODES.CRYSTAL_MINE], 1);26 assert.equal(parseResult.planet.resourceBuildings[CODES.DEUTERIUM_SYNTHESIZER], 0);27 assert.equal(parseResult.planet.resourceBuildings[CODES.SOLAR_PLANT], 4);28 assert.equal(parseResult.planet.resourceBuildings[CODES.METAL_STORAGE], 0);29 assert.equal(parseResult.planet.resourceBuildings[CODES.CRYSTAL_STORAGE], 0);30 assert.equal(parseResult.planet.resourceBuildings[CODES.DEUTERIUM_TANK], 0);31 assert.equal(parseResult.planet.ships[CODES.SOLAR_SATELLITE], 0);32 done();33 });34 it('Should parse the building construction countdown', (done) => {35 const parseResult = resourcesPageParser(resourcesPageProduction);36 assert.equal(parseResult.planets.length, 1);37 assert.equal(parseResult.planet.planetName, 'Homeworld');38 assert.equal(parseResult.planet.planetId, '33628551');39 assert.equal(parseResult.planet.buildingCountdown, 2 * 60 + 28);40 assert.equal(parseResult.planet.coordinates.galaxy, 2);41 assert.equal(parseResult.planet.coordinates.system, 31);42 assert.equal(parseResult.planet.coordinates.planet, 12);43 assert.equal(parseResult.planet.resources.metal, 7065);44 assert.equal(parseResult.planet.resources.crystal, 6872);45 assert.equal(parseResult.planet.resources.deuterium, 1778);46 assert.equal(parseResult.planet.resources.energy, 9);47 assert.equal(parseResult.planet.resourceBuildings[CODES.METAL_MINE], 8);48 assert.equal(parseResult.planet.resourceBuildings[CODES.CRYSTAL_MINE], 5);49 assert.equal(parseResult.planet.resourceBuildings[CODES.DEUTERIUM_SYNTHESIZER], 3);50 assert.equal(parseResult.planet.resourceBuildings[CODES.SOLAR_PLANT], 8);51 assert.equal(parseResult.planet.resourceBuildings[CODES.METAL_STORAGE], 0);52 assert.equal(parseResult.planet.resourceBuildings[CODES.CRYSTAL_STORAGE], 0);53 assert.equal(parseResult.planet.resourceBuildings[CODES.DEUTERIUM_TANK], 0);54 assert.equal(parseResult.planet.ships[CODES.SOLAR_SATELLITE], 0);55 done();56 });...
overviewPageParser.test.js
Source: overviewPageParser.test.js
1import fs from 'fs';2import path from 'path';3import { assert } from 'chai';4import { overviewPageParser } from '../lib/GameClient/parsers/overviewPageParser';5const overviewPage = fs.readFileSync(path.resolve('testPages', 'overview.html'), { encoding: 'utf8' });6const overviewMultiplePlanetsPage = fs.readFileSync(path.resolve('testPages', 'overviewMultiplePlanets.html'), { encoding: 'utf8' });7const overviewAttackPage = fs.readFileSync(path.resolve('testPages', 'overviewAttack.html'), { encoding: 'utf8' });8describe(__filename, () => {9 it('Should parse the test page', (done) => {10 const parseResult = overviewPageParser(overviewPage);11 assert.equal(parseResult.timestamp.getTime(), 1477936188);12 assert.equal(parseResult.planets.length, 1);13 assert.equal(parseResult.planet.planetName, 'Homeworld');14 assert.equal(parseResult.planet.planetId, '33628551');15 assert.equal(parseResult.planet.planetType, 'planet');16 assert.equal(parseResult.planet.coordinates.galaxy, 2);17 assert.equal(parseResult.planet.coordinates.system, 31);18 assert.equal(parseResult.planet.coordinates.planet, 12);19 assert.equal(parseResult.planet.resources.metal, 20903);20 assert.equal(parseResult.planet.resources.crystal, 6827);21 assert.equal(parseResult.planet.resources.deuterium, 6535);22 assert.equal(parseResult.planet.resources.energy, 36);23 assert.equal(parseResult.planet.buildingCountdown, 16 * 60 + 37);24 assert.equal(parseResult.planet.researchCountdown, 11 * 60 + 28);25 assert.equal(parseResult.planet.shipyardCountdown, 39);26 assert.equal(parseResult.enemyAttacks.length, 0);27 done();28 });29 it('Should parse own planets list', (done) => {30 const parseResult = overviewPageParser(overviewMultiplePlanetsPage);31 assert.equal(parseResult.planets.length, 3);32 assert(parseResult.planets.indexOf('33628551') > -1);33 assert(parseResult.planets.indexOf('33632988') > -1);34 assert(parseResult.planets.indexOf('33633342') > -1);35 done();36 });37/*38 it('Should detect an attack', () => {39 const parseResult = overviewPageParser(overviewAttackPage);40 assert.equal(parseResult.enemyAttacks.length, 1);41 });42*/43 //TODO test more than just one mission...
loginPageParser.test.js
Source: loginPageParser.test.js
1import fs from 'fs';2import path from 'path';3import { assert } from 'chai';4import { loginPageParser } from '../lib/GameClient/parsers/loginPageParser';5const loginPage = fs.readFileSync(path.resolve('testPages', 'login.html'), { encoding: 'utf8' });6describe(__filename, () => {7 it('Should parse the test page', (done) => {8 const parseResult = loginPageParser(loginPage);9 assert(parseResult.universes);10 assert.equal(parseResult.universes['Event server'], 's205-en.ogame.gameforge.com');11 assert.equal(parseResult.universes.Betelgeuse, 's128-en.ogame.gameforge.com');12 assert.equal(parseResult.universes.Cygnus, 's129-en.ogame.gameforge.com');13 assert.equal(parseResult.universes.Deimos, 's130-en.ogame.gameforge.com');14 assert.equal(parseResult.universes.Eridanus, 's131-en.ogame.gameforge.com');15 assert.equal(parseResult.universes.Fidis, 's132-en.ogame.gameforge.com');16 assert.equal(parseResult.universes.Ganimed, 's133-en.ogame.gameforge.com');17 assert.equal(parseResult.universes.Hyperion, 's134-en.ogame.gameforge.com');18 assert.equal(parseResult.universes.Izar, 's135-en.ogame.gameforge.com');19 assert.equal(parseResult.universes.Japetus, 's136-en.ogame.gameforge.com');20 assert.equal(parseResult.universes.Kallisto, 's137-en.ogame.gameforge.com');21 assert.equal(parseResult.universes.Libra, 's138-en.ogame.gameforge.com');22 assert.equal(parseResult.universes.Nusakan, 's140-en.ogame.gameforge.com');23 assert.equal(parseResult.universes.Oberon, 's141-en.ogame.gameforge.com');24 assert.equal(parseResult.universes.Polaris, 's142-en.ogame.gameforge.com');25 assert.equal(parseResult.universes.Unity, 's139-en.ogame.gameforge.com');26 assert.equal(parseResult.universes.Quantum, 's117-en.ogame.gameforge.com');27 assert.equal(parseResult.universes.Rigel, 's118-en.ogame.gameforge.com');28 assert.equal(parseResult.universes.Taurus, 's120-en.ogame.gameforge.com');29 assert.equal(parseResult.universes.Vega, 's122-en.ogame.gameforge.com');30 assert.equal(parseResult.universes.Wasat, 's123-en.ogame.gameforge.com');31 assert.equal(parseResult.universes['1. Universe'], 's1-en.ogame.gameforge.com');32 done();33 });...
fleetOnePageParser.test.js
Source: fleetOnePageParser.test.js
1import fs from 'fs';2import path from 'path';3import { assert } from 'chai';4import { CODES } from '../lib/GameElements';5import { fleetOnePageParser } from '../lib/GameClient/parsers/fleetOnePageParser';6const fleetOnePage = fs.readFileSync(path.resolve('testPages', 'fleet1.html'), { encoding: 'utf8' });7describe(__filename, () => {8 it('Should parse the test page', (done) => {9 const parseResult = fleetOnePageParser(fleetOnePage);10 assert.equal(parseResult.planets.length, 1);11 assert.equal(parseResult.timestamp.getTime(), 1478028927);12 assert.equal(parseResult.planet.planetName, 'Homeworld');13 assert.equal(parseResult.planet.planetId, '33628551');14 assert.equal(parseResult.planet.planetType, 'planet');15 assert.equal(parseResult.planet.coordinates.galaxy, 2);16 assert.equal(parseResult.planet.coordinates.system, 31);17 assert.equal(parseResult.planet.coordinates.planet, 12);18 assert.equal(parseResult.planet.resources.metal, 64132);19 assert.equal(parseResult.planet.resources.crystal, 25272);20 assert.equal(parseResult.planet.resources.deuterium, 5241);21 assert.equal(parseResult.planet.resources.energy, 7);22 assert.equal(parseResult.planet.ships[CODES.LIGHT_FIGHTER], 0);23 assert.equal(parseResult.planet.ships[CODES.HEAVY_FIGHTER], 0);24 assert.equal(parseResult.planet.ships[CODES.CRUISER], 0);25 assert.equal(parseResult.planet.ships[CODES.BATTLESHIP], 0);26 assert.equal(parseResult.planet.ships[CODES.BATTLECRUISER], 0);27 assert.equal(parseResult.planet.ships[CODES.BOMBER], 0);28 assert.equal(parseResult.planet.ships[CODES.DESTROYER], 0);29 assert.equal(parseResult.planet.ships[CODES.DEATHSTAR], 0);30 assert.equal(parseResult.planet.ships[CODES.SMALL_CARGO], 3);31 assert.equal(parseResult.planet.ships[CODES.LARGE_CARGO], 0);32 assert.equal(parseResult.planet.ships[CODES.RECYCLER], 0);33 assert.equal(parseResult.planet.ships[CODES.COLONY_SHIP], 1);34 assert.equal(parseResult.planet.ships[CODES.ESPIONAGE_PROBE], 10);35 assert.equal(parseResult.maxOwnMissions, 4);36 assert.equal(parseResult.ownMissions, 0);37 assert.equal(parseResult.enemyAttacks.length, 0);38 done();39 });...
shipayardPageParser.test.js
Source: shipayardPageParser.test.js
1import fs from 'fs';2import path from 'path';3import { assert } from 'chai';4import { CODES } from '../lib/GameElements';5import { shipyardPageParser } from '../lib/GameClient/parsers/shipyardPageParser';6const shipyardPage = fs.readFileSync(path.resolve('testPages', 'shipyard.html'), { encoding: 'utf8' });7describe(__filename, () => {8 it('Should parse the test page', (done) => {9 const parseResult = shipyardPageParser(shipyardPage);10 assert.equal(parseResult.planets.length, 1);11 assert.equal(parseResult.timestamp.getTime(), 1478027776);12 assert.equal(parseResult.planet.planetName, 'Homeworld');13 assert.equal(parseResult.planet.planetId, '33628551');14 assert.equal(parseResult.planet.planetType, 'planet');15 assert.equal(parseResult.planet.coordinates.galaxy, 2);16 assert.equal(parseResult.planet.coordinates.system, 31);17 assert.equal(parseResult.planet.coordinates.planet, 12);18 assert.equal(parseResult.planet.resources.metal, 59960);19 assert.equal(parseResult.planet.resources.crystal, 23547);20 assert.equal(parseResult.planet.resources.deuterium, 4855);21 assert.equal(parseResult.planet.resources.energy, 7);22 assert.equal(parseResult.planet.ships[CODES.LIGHT_FIGHTER], 0);23 assert.equal(parseResult.planet.ships[CODES.HEAVY_FIGHTER], 0);24 assert.equal(parseResult.planet.ships[CODES.CRUISER], 0);25 assert.equal(parseResult.planet.ships[CODES.BATTLESHIP], 0);26 assert.equal(parseResult.planet.ships[CODES.BATTLECRUISER], 0);27 assert.equal(parseResult.planet.ships[CODES.BOMBER], 0);28 assert.equal(parseResult.planet.ships[CODES.DESTROYER], 0);29 assert.equal(parseResult.planet.ships[CODES.DEATHSTAR], 0);30 assert.equal(parseResult.planet.ships[CODES.SMALL_CARGO], 3);31 assert.equal(parseResult.planet.ships[CODES.LARGE_CARGO], 0);32 assert.equal(parseResult.planet.ships[CODES.RECYCLER], 0);33 assert.equal(parseResult.planet.ships[CODES.COLONY_SHIP], 1);34 assert.equal(parseResult.planet.ships[CODES.ESPIONAGE_PROBE], 10);35 assert.equal(parseResult.planet.ships[CODES.SOLAR_SATELLITE], 1);36 assert.equal(parseResult.enemyAttacks.length, 0);37 done();38 });...
defencePageParser.test.js
Source: defencePageParser.test.js
1import fs from 'fs';2import path from 'path';3import { assert } from 'chai';4import { CODES } from '../lib/GameElements';5import { defencePageParser } from '../lib/GameClient/parsers/defencePageParser';6const defencePage = fs.readFileSync(path.resolve('testPages', 'defense.html'), { encoding: 'utf8' });7describe(__filename, () => {8 it('Should parse the test page', (done) => {9 const parseResult = defencePageParser(defencePage);10 assert.equal(parseResult.planets.length, 1);11 assert.equal(parseResult.timestamp.getTime(), 1477961834);12 assert.equal(parseResult.planet.planetName, 'Homeworld');13 assert.equal(parseResult.planet.planetId, '33628551');14 assert.equal(parseResult.planet.planetType, 'planet');15 assert.equal(parseResult.planet.coordinates.galaxy, 2);16 assert.equal(parseResult.planet.coordinates.system, 31);17 assert.equal(parseResult.planet.coordinates.planet, 12);18 assert.equal(parseResult.planet.resources.metal, 16923);19 assert.equal(parseResult.planet.resources.crystal, 6193);20 assert.equal(parseResult.planet.resources.deuterium, 9580);21 assert.equal(parseResult.planet.resources.energy, 160);22 assert.equal(parseResult.planet.defences[CODES.ROCKET_LAUNCHER], 60);23 assert.equal(parseResult.planet.defences[CODES.LIGHT_LASER], 40);24 assert.equal(parseResult.planet.defences[CODES.HEAVY_LASER], 5);25 assert.equal(parseResult.planet.defences[CODES.GAUSS_CANNON], 0);26 assert.equal(parseResult.planet.defences[CODES.ION_CANNON], 0);27 assert.equal(parseResult.planet.defences[CODES.SMALL_SHIELD_DOME], 1);28 assert.equal(parseResult.planet.defences[CODES.LARGE_SHIELD_DOME], 0);29 assert.equal(parseResult.planet.defences[CODES.ANTI_BALLISTIC_MISSILE], 0);30 assert.equal(parseResult.planet.defences[CODES.INTERPLANETARY_MISSILE], 0);31 assert.equal(parseResult.enemyAttacks.length, 0);32 done();33 });...
Using AI Code Generation
1(async () => {2 const { chromium } = require('playwright');3 const browser = await chromium.launch({ headless: false });4 const context = await browser.newContext();5 const page = await context.newPage();6 const { parseResult } = require('playwright/lib/server/supplements/recorder/recorderApp');7 const result = await page.evaluate(parseResult, { type: 'click', selector: 'text=Google Search' });8 console.log(result);9 await browser.close();10})();11{12 position: { x: 108, y: 10 },13}
Using AI Code Generation
1const { parseResult } = require('playwright/lib/utils/stackTrace');2const { parseResult } = require('playwright/lib/utils/stackTrace');3const { parseResult } = require('playwright/lib/utils/stackTrace');4const { parseResult } = require('playwright/lib/utils/stackTrace');5 at Object.<anonymous> (/Users/user1/stack-trace-parser/test.js:6:9)6 at Module._compile (internal/modules/cjs/loader.js:1137:30)7 at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)8 at Module.load (internal/modules/cjs/loader.js:985:32)9 at Function.Module._load (internal/modules/cjs/loader.js:878:14)10 at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)11 `;12const result = parseResult(stackTrace);13console.log(result);14 {15 }16const { test, expect } = require('@playwright/test');17const { parseResult } = require('playwright/lib/utils/stackTrace');18test('test', async ({ page }) => {19 try {20 } catch (e) {21 const result = parseResult(e.stack);22 console.log(result);23 }24});25 {
Using AI Code Generation
1const { parseResult } = require('@playwright/test/lib/test/result');2const { createTestResult } = require('@playwright/test/lib/test/result');3const { createTest } = require('@playwright/test/lib/test/test');4const { createTestStep } = require('@playwright/test/lib/test/testStep');5const { createTestFixtures } = require('@playwright/test/lib/test/fixtures');6const { createTestSnapshotManager } = require('@playwright/test/lib/test/snapshot/snapshotManager');7const { createTestSnapshotter } = require('@playwright/test/lib/test/snapshot/snapshotter');8const { createTestSnapshotStorage } = require('@playwright/test/lib/test/snapshot/snapshotStorage');9const { createTestSnapshotterConfig } = require('@playwright/test/lib/test/snapshot/snapshotterConfig');10const { createTestSnapshotterState } = require('@playwright/test/lib/test/snapshot/snapshotterState');11const { createTestSnapshotterWorker } = require('@playwright/test/lib/test/snapshot/snapshotterWorker');12const { createTestSnapshotterWorkerState } = require('@playwright/test/lib/test/snapshot/snapshotterWorkerState');13const { createTestSnapshotterWorkerStorage } = require('@playwright/test/lib/test/snapshot/snapshotterWorkerStorage');14const { createTestSnapshotterWorkerConfig } = require('@playwright/test/lib/test/snapshot/snapshotterWorkerConfig');15const { createTestSnapshotterWorkerState } = require('@playwright
Using AI Code Generation
1const { parseResult } = require('playwright/lib/server/chromium/crNetworkManager');2const result = parseResult({3 headers: {4 'content-type': 'text/html; charset=utf-8',5 },6});7console.log(result);8### `parseResult(options)`
Using AI Code Generation
1const { parseResult } = require('playwright/lib/utils/stackTrace');2const stackTrace = require('stack-trace');3const stack = stackTrace.get();4const result = parseResult(stack);5console.log(result);6Please read [CONTRIBUTING.md](
Using AI Code Generation
1const { parseResult } = require('@playwright/test/lib/test/result');2const result = parseResult({3 { type: 'log', value: 'log message' },4 { type: 'info', value: 'info message' },5 { type: 'error', value: 'error message' },6 { type: 'warning', value: 'warning message' },7 { type: 'result', value: 'result message' },8 { type: 'step', value: 'step message' },9 { type: 'snapshot', value: 'snapshot message' }10 { title: 'step 1', annotations: [{ type: 'log', value: 'log message' }] },11 { title: 'step 2', annotations: [{ type: 'info', value: 'info message' }] },12 { title: 'step 3', annotations: [{ type: 'error', value: 'error message' }] },13 { title: 'step 4', annotations: [{ type: 'warning', value: 'warning message' }] },14 { title: 'step 5', annotations: [{ type: 'result', value: 'result message' }] },15 { title: 'step 6', annotations: [{ type: 'step', value: 'step message' }] },16 { title: 'step 7', annotations: [{ type: 'snapshot', value: 'snapshot message' }] }17});18console.log(result);
Using AI Code Generation
1const { parseResult } = require('playwright/lib/protocol/protocol');2const { test } = require('playwright/lib/test');3const { expect } = require('playwright/lib/utils/expect');4const { testFixtures } = require('playwright/lib/test/fixtures');5const { TestType } = require('playwright/lib/test/types');6const { TestError } = require('playwright/lib/test/testError');7const { TestResult } = require('playwright/lib/test/testResult');8const { TestStatus } = require('playwright/lib/test/testStatus');9const { TestStep } = require('playwright/lib/test/testStep');10const { Test } = require('playwright/lib/test/test');11const { TestRunner } = require('playwright/lib/test/testRunner');12const { RunnerConfig } = require('playwright/lib/test/runnerConfig');13const { RunnerSuite } = require('playwright/lib/test/runnerSuite');14const { RunnerWorker } = require('playwright/lib/test/runnerWorker');15const { RunnerWorkerPool } = require('playwright/lib/test/runnerWorkerPool');16const { Suite } = require('playwright/lib/test/suite');
Using AI Code Generation
1const { parseResult } = require('playwright/lib/utils/utils');2const result = {3 '0': {4 '0': {5 },6 '1': {7 }8 },9 '1': {10 '0': {11 },12 '1': {13 }14 }15};16const parsedResult = parseResult(result);17console.log(parsedResult);18const { parseResult } = require('playwright/lib/utils/utils');19const playwright = require('playwright');20const browser = await playwright.chromium.launch();21const context = await browser.newContext();22const page = await context.newPage();23const result = await page.evaluate(() => {24 return {25 '0': {26 '0': {27 },28 '1': {29 }30 },31 '1': {32 '0': {33 },34 '1': {35 }36 }37 }38});39const parsedResult = parseResult(result);40console.log(parsedResult);41[MIT](LICENSE)
Using AI Code Generation
1const { parseResult } = require('playwright/lib/locator');2const { Locator } = require('playwright/lib/locator');3const locator = new Locator(page, 'test');4const element = await locator.elementHandle();5const result = await parseResult(element, 'test');6console.log(result);7const { parseResult } = require('playwright/lib/locator');8const { Locator } = require('playwright/lib/locator');9const locator = new Locator(page, 'test');10const element = await locator.elementHandle();11const result = await parseResult(element, 'test');12console.log(result);13const { parseResult } = require('playwright/lib/locator');14const { Locator } = require('playwright/lib/locator');15const locator = new Locator(page, 'test');16const element = await locator.elementHandle();17const result = await parseResult(element, 'test');18console.log(result);19 OS: Linux 5.11 Ubuntu 21.04 (Hirsute Hippo)
Jest + Playwright - Test callbacks of event-based DOM library
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
Running Playwright in Azure Function
How to run a list of test suites in a single file concurrently in jest?
This question is quite close to a "need more focus" question. But let's try to give it some focus:
Does Playwright has access to the cPicker object on the page? Does it has access to the window object?
Yes, you can access both cPicker and the window object inside an evaluate call.
Should I trigger the events from the HTML file itself, and in the callbacks, print in the DOM the result, in some dummy-element, and then infer from that dummy element text that the callbacks fired?
Exactly, or you can assign values to a javascript variable:
const cPicker = new ColorPicker({
onClickOutside(e){
},
onInput(color){
window['color'] = color;
},
onChange(color){
window['result'] = color;
}
})
And then
it('Should call all callbacks with correct arguments', async() => {
await page.goto(`http://localhost:5000/tests/visual/basic.html`, {waitUntil:'load'})
// Wait until the next frame
await page.evaluate(() => new Promise(requestAnimationFrame))
// Act
// Assert
const result = await page.evaluate(() => window['color']);
// Check the value
})
Check out the latest blogs from LambdaTest on this topic:
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.
Hey Testers! We know it’s been tough out there at this time when the pandemic is far from gone and remote working has become the new normal. Regardless of all the hurdles, we are continually working to bring more features on-board for a seamless cross-browser testing experience.
JavaScript is one of the most widely used programming languages. This popularity invites a lot of JavaScript development and testing frameworks to ease the process of working with it. As a result, numerous JavaScript testing frameworks can be used to perform unit testing.
When it comes to UI components, there are two versatile methods that we can use to build it for your website: either we can use prebuilt components from a well-known library or framework, or we can develop our UI components from scratch.
Sometimes, in our test code, we need to handle actions that apparently could not be done automatically. For example, some mouse actions such as context click, double click, drag and drop, mouse movements, and some special key down and key up actions. These specific actions could be crucial depending on the project context.
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!!