Hi Adel,

Thanks for trying it! :)

> On 2 Jul 2018, at 10:52, Adel Atallah <adel.atal...@xwiki.com> wrote:
> 
> Hi,
> 
> It will be very useful to be able to run functional tests on all
> supported browsers. However I wonder if it will also be as useful for
> different servlet containers and databases (at least when the database
> schema doesn't change).
> I tried to run the tests on my machine but I got an error:
> https://pastebin.com/raw/cYjec5Bm (I haven't analyzed it yet but you
> might have an idea why I'm getting this).

Yes I know why. It’s because I need to find the IP so that the browser in the 
docker container can open a URL to your XWiki running on your host.

It seems in your case that the IP resolving that I do lead to 127.0.0.1 which 
is wrong since that points to the container and not outside.

I’ve pushed a fix for my code, see 
https://github.com/xwiki/xwiki-platform/commit/380c803357d49231eaf4f513d5c2ddf1bfcfc55c

Note that it’s also possible to pass the system property “xwiki.test.baseURL”, 
e.g. "xwiki.test.baseURL=http://192.168.0.45” (without the port).

> Also it's a bit disturbing to wait for the docker images to be
> downloaded without knowing it (we should at least have a message
> saying "Downloading images..." or even better, the docker output).

Note that it’s only the first time.

Re displaying some progress/info, I’ll need to check if that can be configured 
in TestContainers but I doubt it.

Thanks
-Vincent

> 
> Thanks,
> Adel
> 
> 
> On Mon, Jul 2, 2018 at 10:40 AM, Vincent Massol <vinc...@massol.net> wrote:
>> Important note:
>> * We’ll only be able to test Firefox and Chrome browsers since there’s no 
>> Docker containers for windows/mac having IE11/Edge and Safari (they’re not 
>> supported ATM even on windows machines).
>> * We could work around this by having some agents running on Windows and 
>> using the installed IE11/Edge browser (i.e. not running in a Docker 
>> container). However it’s too complex FTM and I’d instead move this to later 
>> and instead focus on running XWiki on various DBs.
>> * So this means that we’ll still need manual tests for IE11/Edge/Safari for 
>> the moment...
>> 
>> Thanks
>> -Vincent
>> 
>>> On 30 Jun 2018, at 14:59, Vincent Massol <vinc...@massol.net> wrote:
>>> 
>>> Status as of today:
>>> 
>>> * I have a working POC for running XWiki functional tests in various 
>>> browsers (chrome and firefox FTM), using the latest Selenium and latest 
>>> Chrome/Firefox. I’ll commit today or in the coming days. Ofc it requires 
>>> docker to be installed so I’ll create a “docker” profile in the build so 
>>> that the build doesn’t break on agents which don’t have docker installed 
>>> yet. It’ll allow you to start testing it on your local machines.
>>> 
>>> * I have updated the design page at 
>>> http://design.xwiki.org/xwiki/bin/view/Proposal/ConfigurationTesting
>>> 
>>> Next steps:
>>> 
>>> * Commit the work one (in the coming days)
>>> * I have started trying to deploy XWiki in an embedded undertow. Still not 
>>> working at this stage (but I’ve progressed). I still don’t know if this is 
>>> going to work or not. I hope it will since that would save me from having 
>>> to write the equivalent of the Packager plugin.
>>> * Integrate ability to choose the DB to use for the tests.
>>> 
>>> Feedback most welcome.
>>> 
>>> Thanks
>>> -Vincent
>>> 
>>>> On 27 May 2018, at 21:44, Vincent Massol <vinc...@massol.net> wrote:
>>>> 
>>>> Hi devs,
>>>> 
>>>> I’d like to give you some info about what I’ve started working on and 
>>>> verify you like the direction I’m proposing to take for the future of 
>>>> functional testing on the xwiki project.
>>>> 
>>>> Needs
>>>> =====
>>>> 
>>>> * Be able to test xwiki on multiple environments
>>>> 
>>>> Context
>>>> ======
>>>> 
>>>> * Right now we test only in 1 env (Jetty+HSQLDB)
>>>> * I've started some docker images in xwiki-contrib
>>>> * I’ve also started some experiment through 
>>>> https://jira.xwiki.org/browse/XWIKI-14929 and 
>>>> https://jira.xwiki.org/browse/XWIKI-14930 (see also email thread 
>>>> "[Brainstorming] Implementing multi-environment tests - Take 2” and 
>>>> https://github.com/xwiki/xwiki-platform/compare/XWIKI-14929-14930). This 
>>>> email supersedes the "[Brainstorming] Implementing multi-environment tests 
>>>> - Take 2” thread.
>>>> * Initially I imagined doing the multi env testing in Jenkins thanks to 
>>>> the Jenkins Docker plugin/library. However I realized that it would be 
>>>> better to be able to run that on the dev machines and thus decided instead 
>>>> to implement it at the maven level thanks to the Fabric8 Maven plugin.
>>>> 
>>>> Proposal
>>>> =======
>>>> 
>>>> * The new proposal is to stop trying to do it at the maven level and 
>>>> instead do it at the Java level, i.e. be able to control (start/stop the 
>>>> various docker images for the DB, Servlet Container/XWiki and the Browser 
>>>> from within the java junit/selenium tests).
>>>> * There are several java libraries existing to control docker from within 
>>>> java. For example: https://github.com/docker-java/docker-java
>>>> * I got convinced when finding this awesome library that combines 
>>>> JUnit5/Selenium and Docker for multi-browser testing: 
>>>> https://bonigarcia.github.io/selenium-jupiter/
>>>> ** Note that this relies on the browser docker images provided by the 
>>>> Selenoid project: https://aerokube.com/selenoid/latest/
>>>> * So the idea is to extend that to be able to control the other 2 docker 
>>>> containers for the DB + ServletContainer/XWiki.
>>>> 
>>>> Pros
>>>> ====
>>>> 
>>>> * Very simple setup to start/stop functional tests (and to debug them). 
>>>> Only requires Docker to be installed locally.
>>>> * Very simple to test any combination of DB/Servlet Container/Browser.
>>>> * Always up to date images with the latest version (we can depend on 
>>>> LATEST of Browser images, MySQL, Tomcat, etc).
>>>> * Using JUnit5 and thus the latest features
>>>> * Moving to the latest Selenium version too
>>>> * Also supports manually executing tests in a given running xwiki instance
>>>> 
>>>> Implementation
>>>> ============
>>>> 
>>>> Something like:
>>>> 
>>>> --> XWikiSeleniumExtension extends SeleniumExtension
>>>> 
>>>> @ExtendWith(XWikiSeleniumExtension.class)
>>>> public class Test
>>>> 
>>>> @Test
>>>> public void xxx(XWikiWebDriver driver)
>>>> {
>>>> …
>>>> }
>>>> 
>>>> And be able to configure the DB to use, the Servlet container to use, and 
>>>> the packaging to use from system properties (and also from the test 
>>>> itself, see https://bonigarcia.github.io/selenium-jupiter/#generic-driver).
>>>> 
>>>> The idea is to reimplement the XWiki Packaging Maven plugin as a java lib 
>>>> using Aether and to just start our functional tests using pure junit 
>>>> without anymore more. All the hard work will be performed by the JUnit5 
>>>> extension (create the packaging if not already exist, update some part of 
>>>> it if files have been modifier, start/stop DB+Servlet+Browser+Selenium, 
>>>> download the docker images).
>>>> 
>>>> The packaging will be configurable. Some ideas of options:
>>>> * use an already running xwiki instance
>>>> * docker created from full XS zip from URL
>>>> * docker created from XS zip from maven artifact
>>>> * docker created from computed based on pom in current dir
>>>> 
>>>> Migration
>>>> =======
>>>> 
>>>> Once a first version is working, it’ll be easy to use it only for a single 
>>>> platform functional tests and then slowly move each module to use the new 
>>>> way for its functional tests.
>>>> 
>>>> WDYT?
>>>> 
>>>> I’m planning to continue my investigation/development of this. So please 
>>>> let me know if you have feedback.
>>>> 
>>>> Thanks
>>>> -Vincent
>>>> 
>>>> 
>>> 
>> 

Reply via email to