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)
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?
Jest + Playwright - Test callbacks of event-based DOM library
Well this is one way, but not sure if it will work for all possible locators!.
// Get a selector from a playwright locator
import { Locator } from "@playwright/test";
export function extractSelector(locator: Locator) {
const selector = locator.toString();
const parts = selector.split("@");
if (parts.length !== 2) { throw Error("extractSelector: susupect that this is not a locator"); }
if (parts[0] !== "Locator") { throw Error("extractSelector: did not find locator"); }
return parts[1];
}
Check out the latest blogs from LambdaTest on this topic:
In today’s tech world, where speed is the key to modern software development, we should aim to get quick feedback on the impact of any change, and that is where CI/CD comes in place.
Agile software development stems from a philosophy that being agile means creating and responding to change swiftly. Agile means having the ability to adapt and respond to change without dissolving into chaos. Being Agile involves teamwork built on diverse capabilities, skills, and talents. Team members include both the business and software development sides working together to produce working software that meets or exceeds customer expectations continuously.
The count of mobile users is on a steep rise. According to the research, by 2025, it is expected to reach 7.49 billion users worldwide. 70% of all US digital media time comes from mobile apps, and to your surprise, the average smartphone owner uses ten apps per day and 30 apps each month.
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!!