Hi Ryan! >Otherwise the drag(...) command will throw an exception because it can't find the node for "list-item-name" (it doesn't exist yet).
Well, this is very interesting. This must be a NoNodesFoundException in TestFX 3. >I don't actually needto call firePulse(). I just need a way to know the scene is up to date with a re-validated model. Is there a better way of accomplishing that right now? TestFX should try to find the Node within the JavaFX Application Thread using Platform.runLater(...). Maybe this is a better way than to call firePulse(), --Benjamin On Thu, Sep 24, 2015 at 12:49 PM, Ryan Jaeb <[email protected]> wrote: > I use firePulse() in GUI test code. I'm using TestFX (v3) for testing. Is > there a way to ensure model updates are reflected in the scene without > using firePulse()? Consider something like this: > > ... > // TestFX starts us on the main thread. Maybe I'm using it wrong? > > CountDownLatch latch = new CountDownLatch(1); > > Platform.runLater(() -> { > // Add "list-item-name" to an empty list that's used as the model for > // a ListView. > Toolkit.getToolkit().firePulse(); > latch.countDown(); > }); > > try { > latch.await(1, TimeUnit.SECONDS); > } > catch (InterruptedException e) { > throw new RuntimeException(e); > } > > // TestFX runs this on the application thread. > drag("list-item-name").to("trash"); > > assertTrue(list.isEmpty); > ... > > In a case like the above, firePulse() is used to ensure a node (ListCell) > for "list-item-name" is added to the scene before continuing with the > test. Otherwise the drag(...) command will throw an exception because it > can't find the node for "list-item-name" (it doesn't exist yet). > > I don't actually needto call firePulse(). I just need a way to know the > scene is up to date with a re-validated model. Is there a better way of > accomplishing that right now? > > Ryan > > > On Wed, Sep 23, 2015 at 5:49 PM, Jonathan Giles <[email protected] > > > wrote: > > > Hi all, > > > > Today I am keen to get your help on understanding use of the > > Toolkit.getToolkit().firePulse() private API. If you could spare a few > > minutes to grep your source directory for any usage of 'firePulse', and > > email me your findings, that would be really interesting. > > > > As a gentle motivational tool I'll conclude by saying that, surprisingly, > > this private API is barely used inside the openjfx production code. If > you > > look at the openjfx unit tests, it is used massively. The question is - > how > > much is this being used by other community members. If the answer is 'not > > much' or less, then this private API may not be made public in JDK 9. > Your > > feedback therefore is critical! > > > > Thanks, > > -- Jonathan > > >
