Cool. I was wondering what those references to Playwright were.

A couple of questions:

Does this bring any performance improvements?
Does this make UI testing easier?

> On Aug 2, 2022, at 8:50 PM, Josh Tynjala <joshtynj...@bowlerhat.dev> wrote:
> 
> Hey all,
> 
> Recently, I committed some changes to the RoyaleUnit Ant task to make it
> more robust and powerful. This is in response to my recent discovery that
> the RoyaleUnit testing in our royale-asjs build seems to have become less
> reliable over time since I originally set things up.
> 
> In particular, I found that Chrome was failing on certain tests because of
> security restrictions with file:/// URLs (I guess that Chrome was either
> not as strict in the past, or we have added newer tests that are accessing
> restricted APIs that we weren't using in the past). Additionally, I was
> seeing the occasional intermittent communication failure in Firefox, for no
> obvious reason.
> 
> To remedy this situation, I've integrated Playwright into the RoyaleUnit
> Ant task.
> 
> https://playwright.dev
> 
> If you're not aware, Playwright is a library that enables automated testing
> in Chromium, Firefox, and Webkit. Playwright works on macOS, Linux, and
> Windows, and it has a powerful programmatic API (available for a number of
> languages... we're using the Java version).
> 
> By using Playwright, we get some interesting enhancements to our JS testing:
> 
>   - Headless
>      - No browser windows popping up during long builds
>   - Doesn't use your installed browsers
>      - Won't litter your default browser with a bunch of tabs that don't
>      auto-close
>      - No risk of being affected by customized extensions/add-ons
>   - It automatically sets up the correct security sandbox
>      - No arcane combinations of command line arguments or about:config
>      tweaks to get file:/// URLs working as we need
>   - The browser debugging console (trace/console.log) messages appear in
>   the terminal output of the build
>      - Easier to see what went wrong if an exception is thrown during tests
> 
> The "player" attribute of the <royaleunit/> task may now be set to
> "chromium", "firefox", or "webkit" to use a specific browser. RoyaleUnit
> will keep supporting the "html" value for backwards compatibility, and
> it's now an alias for "chromium". You can also use "html" when you want to
> use a custom browser executable instead of Playwright.
> 
> Example of <royaleunit/> in an Ant script that runs JS tests in
> WebKit/Safari:
> 
> <royaleunit
>    player="webkit"
>    swf="${basedir}/target/bin/js-release/index.html"/>
> 
>> Aside: Yes, the attribute name for the file/URL is still "swf". That's a
> legacy from FlexUnit. We could add an alias, but it hasn't been a priority.
> 
> I have updated the royale-asjs build to use Playwright, instead of trying
> to detect which browsers are installed locally.
> 
> That's not the only change to the RoyaleUnit Ant task that I've made
> recently, though.
> 
> First, I should specify it's still possible to specify a custom
> royaleunit.browser property in your env.properties file for the royale-asjs
> Ant build. If you have that set up already, you don't need to change
> anything. It should keep working the same as before, and your build won't
> use Playwright when royaleunit.browser is defined. However, if you would
> like to switch to Playwright for local builds, you can just comment out or
> remove the royaleunit.browser property customization from your
> env.properties file (or from the -Droyaleunit.browser command line
> arguments, or any other place you might have set it).
> 
> If you'd like to keep using a custom browser, you may be interested to know
> that the RoyaleUnit Ant task now supports custom arguments when you specify
> an executable command. Example below:
> 
> <royaleunit
>    player="html"
>    swf="${basedir}/target/bin/js-release/index.html"
>    command="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
>    commandArgs="--no-sandbox --user-data-dir=custom_chrome_profile
> --no-first-run"/>
> 
>> Aside: The commandArgs above should work well to get tests to pass in
> Chrome with file:/// URLs, even without Playwright. Other browsers may
> require different commandArgs.
> 
> I updated the royale-asjs build to optionally support both the
> royaleunit.browser property along with a new royaleunit.browser.args
> property, which you can specify in env.properties, if you prefer not to
> rely on Playwright. Example below (on macOS):
> 
> # in env.properties
> royaleunit.browser=/Applications/Google Chrome.app/Contents/MacOS/Google
> Chrome
> royaleunit.browser.args=--no-sandbox
> --user-data-dir=/Users/joshtynjala/Development/apache/royaleunit_chrome_profile
> --no-first-run
> 
> Please let me know if anything seems broken. I've confirmed that Playwright
> tests are working on CI builds. It's also working on both my local macOS
> and Windows machines.
> 
> --
> Josh Tynjala
> Bowler Hat LLC <https://bowlerhat.dev>

Reply via email to