Skip to content

Screenshot action hangs application #555

Closed
@bahlo

Description

@bahlo

Hey guys, thank you for this library, I'm really loving it (especially in comparison with the PhantomJS backend).

I'm creating screenshots of a page with multiple views with the following code.
The views are changed in the nextView function.

for (var i = 0; i < count; i++) {
  nightmare
    .wait(2000)
    .screenshot(path.resolve(__dirname, i + '.png'))
    .evaluate(nextView)
}

nightmare
  .end()
  .then(function() {
    console.log("Done")
  }).catch(function(err) {
    console.error(err);
  })

This works great on most pages, but it hangs on a specific page (I'm sorry I can't disclose the contents).
Here is a part of the log:

  nightmare:actions .evaluate() fn on the page +2ms
  nightmare:actions .wait() for 2000ms +6ms
  nightmare:actions .screenshot() +2s
  nightmare:log subscribing to browser window frames +1ms
  nightmare:log altering page to force rendering +0ms
  nightmare:log unsubscribing from browser window frames +57ms
  nightmare:actions .screenshot() captured with length 342104 +606ms
  nightmare:actions .evaluate() fn on the page +2ms
  nightmare:actions .wait() for 2000ms +392ms
  nightmare:actions .screenshot() +2s
  nightmare:log subscribing to browser window frames +0ms
  nightmare:log altering page to force rendering +0ms

As you can see, the screenshot before renders nicely, but the last one does not seem to do anything.
The requestFrame function doesn't seem to call its callback.

Do you have any tips for me to debug this? Setting a waitTimeout doesn't help since I'm not waiting.

Update: Okay, I tried again with show: yes and manually triggered a re-render and it worked. Maybe I'll try to click on something to trigger that render manually every time.

Update 2: Since it's only waiting for change after the screenshot action, calling scrollTo or click before doesn't help.

Update 3: I tested it and the callback doesn't get called in the requestFrame function for this screenshot (all the other shots are working fine).

Update 4: I'm just calling the callback directly in requestFrame which is bad, but works for me. Gonna leave this issue open though.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions