Playwright
view release on metacpan or search on metacpan
bin/playwright_server view on Meta::CPAN
#!/usr/bin/env node
"use strict";
// If we don't have this, we're done for
const { exit } = require('process');
const fs = require('fs');
const path = require('path');
const { env } = require('process');
module.paths.push( '/usr/local/lib/node_modules' );
// Assume their kit is good
require('uuid');
require('playwright');
require('express');
// Get what we actually want from our deps
const { v4 : uuidv4 } = require('uuid');
const { chromium, firefox, webkit, devices } = require('playwright');
const express = require('express');
const bodyParser = require('body-parser');
// Setup the max body size
// Stuff like this is why I don't usually use frameworks, just chunk it dawg
var MAX_REQUEST_SIZE = env.MAX_REQUEST_SIZE;
// Defines our interface
// let sharedir = require.resolve('playwright'); // api.json should be shipped with playwright itself
// var theFile = path.dirname(sharedir) + '/api.json';
// let rawdata = fs.readFileSync(theFile);
// This is automatically inserted via sed
let spec =
[{"name":"Accessibility","spec":[{"type":"text","text":"The Accessibility class provides methods for inspecting Chromium's accessibility tree. The accessibility tree is used byâµassistive technology such as [screen readers](https://en.wikipedia.org/...
function arr2hash (arr,primary_key) {
var inside_out = {};
for (var item of arr) {
inside_out[item.name] = item;
}
return inside_out;
}
var fix_it=false;
if (spec instanceof Array) {
fix_it = true;
spec = arr2hash(spec,'name');
}
// Establish argument order for callers, and correct spec array-ification
for (var classname of Object.keys(spec)) {
if (spec[classname].members instanceof Array) {
spec[classname].members = arr2hash(spec[classname].members,'name');
}
for (var method of Object.keys(spec[classname].members)) {
var order = 0;
if (spec[classname].members[method].args instanceof Array) {
spec[classname].members[method].args = arr2hash(spec[classname].members[method].args,'name');
}
for (var arg of Object.keys(spec[classname].members[method].args) ) {
spec[classname].members[method].args[arg].order = order++;
}
}
}
//XXX spec is wrong here unfortunately
if (fix_it) {
for (var className of ['Page','Frame','ElementHandle']) {
spec[className].members.$$ = spec[className].members.querySelectorAll;
spec[className].members.$ = spec[className].members.querySelector;
spec[className].members.$$eval = spec[className].members.evalOnSelectorAll;
spec[className].members.$eval = spec[className].members.evalOnSelector;
}
}
// Parse arguments
var args = process.argv.slice(2);
if ( args.filter(arg => arg == '--help' || arg == '-h' || arg == '-?' ).length > 0 ) {
console.log("Usage:\nplaywright_server [--debug | --check | --port PORT | --cdp URI --help]");
exit(0);
}
if ( args.filter(arg => arg == '--check').length > 0 ) {
console.log('OK');
exit(0);
}
var debug = false;
if ( args.filter(arg => arg == '--debug').length > 0 ) {
debug = true;
}
var got_port = 6969;
( run in 1.677 second using v1.01-cache-2.11-cpan-39bf76dae61 )