TestRail Perl API

George Baugh 7626f61ebb Fix #49, prep for release hai 1 ano
.github 14934f4b28 add funding.yml %!s(int64=3) %!d(string=hai) anos
at 8dd8a264dd Fix #9: needed special handling %!s(int64=3) %!d(string=hai) anos
bin cf5558e4d3 Fix #39 %!s(int64=2) %!d(string=hai) anos
conf 7626f61ebb Fix #49, prep for release hai 1 ano
lib 7626f61ebb Fix #49, prep for release hai 1 ano
t bb97afb2b4 Fix test %!s(int64=2) %!d(string=hai) anos
.gitignore c3260c6a8b Update for new playwright %!s(int64=3) %!d(string=hai) anos
.nvmrc 7ee03ff066 updates for 1.18 %!s(int64=2) %!d(string=hai) anos
.travis.yml b8b4a224ff support policy %!s(int64=3) %!d(string=hai) anos
Changes 9c38f26f6d Fix #38 %!s(int64=2) %!d(string=hai) anos
LICENSE 7ee03ff066 updates for 1.18 %!s(int64=2) %!d(string=hai) anos
MANIFEST.SKIP b55c6aa8f1 v1.2.1 release %!s(int64=2) %!d(string=hai) anos
README.md 7626f61ebb Fix #49, prep for release hai 1 ano
clean_generated_files.sh ed39032949 Ban the _request method on pw objects to prevent deep recursion %!s(int64=2) %!d(string=hai) anos
dist.ini 7626f61ebb Fix #49, prep for release hai 1 ano
example.pl 67184f4f15 fix to handle 1.16 %!s(int64=2) %!d(string=hai) anos
generate_api_json.sh 9c38f26f6d Fix #38 %!s(int64=2) %!d(string=hai) anos
generate_perl_modules.pl b55c6aa8f1 v1.2.1 release %!s(int64=2) %!d(string=hai) anos
package.json 7626f61ebb Fix #49, prep for release hai 1 ano
perlcriticrc 9c38f26f6d Fix #38 %!s(int64=2) %!d(string=hai) anos
playwright_server 67184f4f15 fix to handle 1.16 %!s(int64=2) %!d(string=hai) anos
run_example ed39032949 Ban the _request method on pw objects to prevent deep recursion %!s(int64=2) %!d(string=hai) anos
tidyall.ini d6b046b97a more work on #15 %!s(int64=3) %!d(string=hai) anos
weaver.ini 977be40cb6 skeleton of module & beginning of app server %!s(int64=3) %!d(string=hai) anos

README.md

playwright-perl Build Status Coverage Status

Perl bindings for playwright, the amazing cross browser testing framework from Microsoft

Has this ever happened to you?

You're writing some acceptance test with Selenium::Remote:Driver, but you figure out selenium is a dead protocol? Finally, a solution!

Here's how it works

A little node webserver written in express is spun up which exposes the entire playwright API. We ensure the node deps are installed in a BEGIN block, and then spin up the proxy server. You then use playwright more or less as normal; see the POD in Playwright.pm for more details.

See example.pl in the toplevel of this project on gitHub for usage examples.

Supported Perls

Everything newer than 5.28 is supported.

Things should work on 5.20 or newer, but... Tests might fail due to Temp file weirdness with Test::MockFile.

Supported OS

Everything seems to work fine on OSX and Linux.

On Windows, you will have to approve a UAC prompt to exempt playwright_server from being firewalled off.

How2develop

Everything should more or less set itself up automatically, or explode and tell you what to do. I assume you know how to get cpanm.

You might want to use distro packages for some of these:

sudo cpanm Dist::Zilla
dzil authordeps --missing | sudo cpanm
dzil listdeps --missing | sudo cpanm

From there you'll need nvm to get the latest verison of node working:

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install
nvm use

Running dzil test should let you know if your kit is good to develop.

Actually running stuff will look like this after you generate the API json and modules:

PATH="$(pwd)/bin:$PATH" perl -Ilib example.pl

Dealing with api.json and generating modules

Playwright doesn't ship their api.json with the distribution on NPM. You have to generate it from their repo.

clone it in a directory that is the same as the one containing this repository. then run generate_api_json.sh to get things working such that the build scripts know what to do.

Then run generate_perl_modules.pl to get the accessor classes built based off of the spec, and insert the spec JSON into the playwright_server binary.

To make life simple, you can just run run_example in the TLD when debugging.

Questions?

Hop into the playwright slack, and check out the #playwright-perl channel therein. I'm watching that space and should be able to answer your questions. https://aka.ms/playwright-slack

Apparently Microsoft is trying to migrate to Github's built in forums, so I've activated discussions on this project too (see the tab at the top).