I have never used Selenium. I just wanted to be able to run our RoyaleUnit tests from Ant using the same mechanism for both SWF and JS. I guess if there's some way for Ant to run the tests using Selenium, that would be cool too. Someone more experienced with Selenium would probably need to look into that.
- Josh On 2019/05/24 02:46:45, Alex Harui <[email protected]> wrote: > First off, this sounds like a great new capability for Royale, so thanks for > working on it. > > Regarding JS test issues, did you rule out using Selenium? I haven't had > problems with it on Mac or Win for Mustella. > > HTH, > -Alex > > On 5/23/19, 4:20 PM, "Josh Tynjala" <[email protected]> wrote: > > Unfortunately, I had to disable the JS tests automatically running on the > royale-asjs main build because they intermittently fail on macOS. It seems > that the port that the WebSocket server uses isn't released until some time > after the <royaleunit> task completes. So, after one Royale library is > tested, the next might fail. I haven't figured out what's causing it yet. > Additionally, this issue does not affect Windows. > > The JS tests are still available, if you'd like to run them manually. The > following commands will run tests for CoreJS: > > cd frameworks/js/projects/CoreJS > ant test > > We currently have JS tests for CoreJS, BasicJS, and RoyaleUnitJS. > > - Josh > > On 2019/05/23 19:18:21, Josh Tynjala <[email protected]> wrote: > > Hey Royale team, > > > > Over the last several days, I've been working on RoyaleUnit again, and > I wanted to share a bit about what I've completed this week. > > > > ## New <royaleunit> Ant task > > > > Until now, we've been using the <flexunit> Ant task to run RoyaleUnit > tests on our SWF output in the Ant builds. The RoyaleUnit library is similar > to FlexUnit, but it's a completely new implementation that works on both SWF > and JS. When I first created RoyaleUnit, I could only get SWF output > successfully communicating with the <flexunit> Ant task. JS tests could be > run manually, but they could not be automated in Ant yet, for technical > reasons. > > > > On the SWF side, FlexUnit uses XMLSocket to communicate with the > <flexunit> Ant task. That was easy enough to port over to RoyaleUnit. > However, JS in the browser doesn't have a simple socket implementation that > would allow it to speak the same protocol. The closest thing is WebSocket, > but the <flexunit> Ant task doesn't know how to talk to WebSockets. So, I > created a new <royaleunit> Ant task that can still speak XMLSocket with SWF, > but also supports WebSocket for JS. > > > > Previously, you could specify "flash" or "air" for the player value in > the Ant task: > > > > <royaleunit player="flash" /> > > <royaleunit player="air" /> > > > > I added a new one, "html", that tells the Ant task to use WebSockets. > > > > <royaleunit player="html" /> > > > > Then, you can use the swf property to specify the HTML file to launch: > > > > <royaleunit player="html" swf="bin/js-debug/index.html" /> > > > > (It was already called "swf" in <flexunit>, but maybe we should rename > it or provide an alias) > > > > By default, it should use your default web browser. However, if you'd > prefer a different browser, you can use the command property: > > > > <royaleunit player="html" swf="bin/js-debug/index.html" > command="c:/Program Files/Mozilla Firefox/firefox.exe" /> > > > > ## Ant builds run JS tests > > > > After I got the <royaleunit> Ant task work, I updated our royale-asjs > Ant builds to run both SWF and JS tests. This was interesting because it > needs to launch a web browser, and there are some gotchas that I discovered. > > > > In particular, Internet Explorer always requires the user to manually > click a button to allow JavaScript content to run in a local HTML file. > Likewise, the first time a local file is launched in Safari, it asks to > confirm if you want to open it or not. When you try to open the file again > later, Safari opens it without asking, but that first time isn't ideal. > > > > With the two default browsers not really good candidates, I decided to > try Chrome and Firefox. I found that both will run scripts without a prompt, > but they aren't necessarily installed on everyone's systems. So, first it > looks for Chrome (which is the most popular browser these days), and then it > falls back to Firefox. If it can't find either one, the build fails with an > error. > > > > In the case where a browser cannot be found automatically, there is the > option to specify a royaleunit.browser property when running the Ant build > script. You can either add it to your *env.properties* file in the root of > royale-asjs, or you can specify it on the command line like this: > > > > ant -Droyaleunit.browser=path/to/browser.exe > > > > (On macOS, I think that you need to point to the native executable > instead of the .app file, like > /Applications/Firefox.app/Contents/MacOS/firefox) > > > > When <royaleunit> finishes running JS tests in the browser, it will > automatically close the browser — except when that browser was already open > before you started running the tests. In that case, it will simply open a new > tab, which will remain open after the tests complete. So, it won't make you > lose all of your existing tabs or anything. However, it may be annoying to > have a bunch of extra tabs that you need to manually close every time that > you run the build script. In that case, just like I explained above, you can > use the royaleunit.browser property in env.properties or via the command line > to tell the build to run JS tests in a different browser that you prefer. As > I mentioned, if that browser isn't already open, the build script will exit > the browser automatically after running tests. > > > > I confirmed that apacheroyaleci on Azure has Firefox installed, and at > least one build has completed successfully on this server. > > > > Please let me know if this has disrupted anything. However, I think > that I covered the edge cases pretty well. > > > > - Josh > > > > >
