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.012 second using v1.01-cache-2.11-cpan-39bf76dae61 )