Monocle in 8u25

Benjamin Gudehus hastebrot at gmail.com
Thu Nov 13 21:01:17 UTC 2014


Hi Neil!

>The TestFX library is still moving the Windows mouse!
TestFX is using Awt's robot. This robot ignores Glass/Monocle and controls
the OS's cursor.
We need to replace it with Glass' robot. I already tested it and it works
fine.
PR will be ready soon. This PR will also replace the Awt screenshot
mechanism with the one
from the Glass robot. I hoped that this will also take screenshots wenn
running in headless mode.
But unfortunately the screenshots were empty. I saw in Monocle's source
code, that it writes
color values into an internal byte stream, so it actually should work.

Also very nice to see, that people are using bleeding edge version of
TestFX. :)
TestFX will also have better Spock/Groovy support in the future.

--Benjamin


On Thu, Nov 13, 2014 at 9:38 PM, <ngalarneau at abinitio.com> wrote:

> Hi Benjamin,
>
> We are using Spock for testing, and have modified the setupStage() method
> to support optional headless testing with Monocle,
> which is working well on Windows (the code is in groovy):
>
>  void setupStage(Closure<javafx.scene.Node> rootNodeFactory)
>   {
>     if (fx == null && isHeadless)
>     {
>       // Cribbed from:
> https://gist.github.com/hastebrot/cbca1128dd791966e3a6
>       PlatformFactory.instance = new MonoclePlatformFactory()
>       NativePlatformFactory.platform = new HeadlessPlatform()
>     }
>     fx = new GuiTest()
>     fx.rootNodeFactory = rootNodeFactory
>     fx.setupGuiTest()
>   }
>
> It works nicely until fx.clickOn is called. The TestFX library is still
> moving the Windows mouse!
>
> Any thoughts?
>
>
> Thanks,
>
> Neil
>
>
>
>
> From:        Benjamin Gudehus <hastebrot at gmail.com>
> To:        Tom Eugelink <tbee at tbee.org>,
> Cc:        "openjfx-dev at openjdk.java.net" <openjfx-dev at openjdk.java.net>
> Date:        11/12/2014 03:10 AM
> Subject:        Re: Monocle in 8u25
> Sent by:        "openjfx-dev" <openjfx-dev-bounces at openjdk.java.net>
> ------------------------------
>
>
>
> That would be nice, Tom.
>
> Example usage:
>
> Since com.sun.glass.ui.PlatformFactory can't find Monocle classes from the
> external jars, we need to change
>
> public static void main(String[] appArgs) {
>    Application.launch(appClass, appArgs);
> }
>
> to
>
> public static void main(String[] appArgs) {
>    new ToolkitApplicationLauncher().launch(appClass, appArgs);
> }
>
> and start the Application with -Djavafx.monocle.headless=true.
>
> ToolkitApplicationLauncher.jar:
> https://gist.github.com/hastebrot/cbca1128dd791966e3a6
>
>
> On Wed, Nov 12, 2014 at 8:48 AM, Tom Eugelink <tbee at tbee.org> wrote:
>
> >  I can roll it out under the same name (openjfx-monocle-1.8.0_20) within
> > the org.jfxtras group. Just say so.
> >
> > Tom
> >
> >
> > On 12-11-2014 08:30, Benjamin Gudehus wrote:
> >
> >    Hi all!
> >
> >  Files and instructions are available at
> https://github.com/TestFX/Monocle
> > .
> >
> >  Releases with jars: https://github.com/TestFX/Monocle/releases
> >
> >  License (taken from OpenJFX respository):
> > https://github.com/TestFX/Monocle/blob/master/LICENSE
> >
> >  Would be nice to have this available from Maven.
> >
> >  --Benjamin
> >
> > On Wed, Nov 5, 2014 at 8:20 PM, Tom Eugelink <tbee at tbee.org> wrote:
> >
> >> This is extremely good news. I have no problem to "drag" that library
> >> along in the JFXtras project (project name seems to be a good match for
> >> this usage ;-) and release it to maven - if that is allowed by the
> JavaFX
> >> license.
> >>
> >> Tom
> >>
> >>
> >>
> >> On 5-11-2014 16:57, Benjamin Gudehus wrote:
> >>
> >>> Hi Sean,
> >>>
> >>> I've put the Monocle sources directly in my code directories for
> >>> testing purposes. Putting it into a separate Jar is possible and I
> >>> thought that pre-compiled jars could be provided via Maven.
> >>>
> >>> I didn't do a complete OpenJFX build, because I was only interested in
> >>> the Headless component of Monocle, i.e. I didn't needed the
> >>> platform-dependent dynamic libraries.
> >>>
> >>> Rough instructions were given in a previous mail. There were some
> >>> request to provide the pre-compoile jars so I will additionally set up
> >>> a public repository with detailed instructions when I'm back home.
> >>>
> >>> --Benjamin
> >>>
> >>> On 11/5/14, Sean True <sean.true at gmail.com> wrote:
> >>>
> >>>> Did you build the glass/ui/monocle sources into a separate jar, or did
> >>>> you
> >>>> do a complete OpenJFX build?
> >>>>
> >>>> If you did a separate build, a recipe would be extremely helpful.
> >>>>
> >>>> -- Sean
> >>>>
> >>>> On Tue, Nov 4, 2014 at 6:17 PM, Benjamin Gudehus <hastebrot at gmail.com
> >
> >>>> wrote:
> >>>>
> >>>>  I managed to run Monocle/Headless on Windows with 8u25. This will
> allow
> >>>>> users to run headless tests.
> >>>>>
> >>>>> All what is needed is to copy all files from
> "com/sun/glass/ui/monocle"
> >>>>> of
> >>>>> "javafx-src.zip" and add the
> >>>>> cursor resource files from
> >>>>> "modules/graphics/src/main/resources/com/sun/glass/ui/monocle" of the
> >>>>> related hg tag in the OpenJFX repository [1].
> >>>>>
> >>>>> Before Application#launch() is called we need to manually set the
> Glass
> >>>>> and
> >>>>> Monocle platforms:
> >>>>>
> >>>>> accessStaticField(com.sun.glass.ui.PlatformFactory.class, "instance",
> >>>>>      new com.sun.glass.ui.monocle.MonoclePlatformFactory());
> >>>>>
> accessStaticField(com.sun.glass.ui.monocle.NativePlatformFactory.class,
> >>>>> "platform",
> >>>>>      new com.sun.glass.ui.monocle.headless.HeadlessPlatform());
> >>>>>
> >>>>> The directory structure in 8u40 is a bit different, but there could
> be
> >>>>> added version checks. Checking
> >>>>> for the JVM vars "glass.platform" and "monocle.platform" might be
> also
> >>>>> added to this code.
> >>>>>
> >>>>> [1] http://hg.openjdk.java.net/openjfx/8u-dev/rt/tags
> >>>>>
> >>>>>
> >>>>> On Tue, Nov 4, 2014 at 8:42 PM, Benjamin Gudehus <
> hastebrot at gmail.com>
> >>>>> wrote:
> >>>>>
> >>>>>  Hmm. Seems that Class.forName() in com.sun.glass.ui.PlatformFactory
> >>>>>> won't
> >>>>>> retrieve externally defined PlatformFactorys. So I will try to set
> the
> >>>>>> PlatformFactory.instance field manually, before the
> >>>>>> Application/Tookit/FX-Thread is launched.
> >>>>>>
> >>>>>> On Tue, Nov 4, 2014 at 7:36 PM, Benjamin Gudehus <
> hastebrot at gmail.com
> >>>>>> >
> >>>>>> wrote:
> >>>>>>
> >>>>>>  Thank you. That makes it clearer. :)
> >>>>>>>
> >>>>>>> Is it possible to supply the headless part of Monocle in an
> external
> >>>>>>> Jar
> >>>>>>> for desktop platforms?
> >>>>>>>
> >>>>>>> As far as I know the only possibility to run TestFX tests with
> >>>>>>> Hudson/Jenkins is in headless mode.
> >>>>>>> TestFX's tests itself can only run with the X virtual framebuffer
> on
> >>>>>>> Linux test clients for the Travis CI so far.
> >>>>>>>
> >>>>>>> So far the only advice I could give TestFX users who like to run
> >>>>>>>
> >>>>>>  headless
> >>>>>
> >>>>>>  tests is to use 1.8.0_20-ea-b05.
> >>>>>>>
>
>
>
>
> NOTICE *from Ab Initio: This email (including any attachments) may
> contain information that is subject to confidentiality obligations or is
> legally privileged, and sender does not waive confidentiality or privilege.
> If received in error, please notify the sender, delete this email, and make
> no further use, disclosure, or distribution. *


More information about the openjfx-dev mailing list