如何 运行 针对 Google App Engine 应用守夜

How to run nightwatch against a Google App Engine app

一位朋友今天向我介绍了 nightwatchjs (http://nightwatchjs.org/),我想尝试一下,看看它在我们的 Google App Engine 应用程序中使用起来有多容易。

我正在尝试创建一个调用 nightwatch 命令的 gradle 任务,但首先通过调用 appengineRun 命令确保 appengine 运行。

目前,任务看起来像这样:

task nightwatch(){
    tasks.appengineDownloadSdk.execute();
    tasks.compileJava.execute();
    tasks.processResources.execute();
    tasks.classes.execute();
    tasks.appengineEnhance.execute();
    tasks.war.execute();
    tasks.appengineExplodeApp.execute();
    tasks.appengineRun.execute();
    exec {
        executable "bash"
        args "-c","nightwatch src/functionalTest/nightwatch/nightwatch.js"
    }
    tasks.appengineStop.execute();
}

我的第一个想法是:一定有更简单的方法!?!?

所以,我的问题实际上是这样的:

  1. 此任务似乎工作正常,只是它在 appengineRun 处停止,因为它不是 运行 守护进程模式。我怎样才能做到这一点?
  2. 如果这实际上不是最好的方法,那什么才是?

如果这不起作用,我将返回到在 JUnit 测试中使用 Selenium。对于那些感兴趣的人:我不需要跳过与 Selenium/JUnit 相同的箍,因为 appengineFunctionalTest gradle 任务确保开发应用程序已经 运行.

感谢人们提供的任何帮助!

我想您只需要 运行 它 appengineRun 之后?你只需要添加 dependsOn: appengineRun 然后。

此外,task 中的所有这些命令都是在 gradle 读取您的脚本时执行的,而不是在执行 taks 时执行的。这是一个配置块。您需要在那里使用 doLast {} 来设置应该执行的代码。

试试这个:

appengine {
    daemon = false
}

task appengineDaemon() {
  doLast {
    appengine {
       daemon = true
    }
  }
}
appengineRun.mustRunAfter(appengineDaemon)

task nightwatch(dependsOn: [appengineRun, appengineDaemon]) {
  doLast {
    exec {
        executable "bash"
        args "-c","nightwatch src/functionalTest/nightwatch/nightwatch.js"
    }
  }
}