CasperJS, navegação paralela COM a estrutura de teste

Pergunta: gostaria de saber se é possível fazer navegação paralelacom a estrutura de teste em um arquivo de script, portanto, com o módulo tester e o comando casperjs test.

Vi algumas pessoas criarem duas instâncias de casper:Pedidos simultâneos do CasperJS ehttps://groups.google.com/forum/#!topic/casperjs/Scx4Cjqp7hE , mas como dito no documento, não podemos criar uma nova instância do casper em um script de teste.

Então, eu tentei fazer algo semelhante, exemplo simples, com um script de teste casper (basta copiar e executar isso, ele funcionará):

var url1 = "http://casperjs.readthedocs.org/en/latest/testing.html"
    ,url2 = "http://casperjs.readthedocs.org/en/latest/testing.html"
    ;

var casperActions = {
    process1: function () {
        casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) {
            "use strict";
            casper.start()
            .thenOpen(url1,function(){
                this.echo("1","INFO");
            });
            casper.wait(10000,function(){
                casper.test.comment("If parallel, it won't be printed before comment of the second processus !");
            })
            .run(function() {
                this.test.comment('----------------------- First processus over ------------------------\n');
                test.done();
            });
        });
    },
  process2: function () {
        casper.test.begin('\n********* Second processus with our test suite : ***********\n', function suite(test) {
            "use strict";
            casper.start()
            .thenOpen(url1,function(){
                this.echo("2","INFO");
            });
            casper.test.comment("Hi, if parallel, i'm first !");
            casper.run(function() {
                this.test.comment('----------------------- Second processus over ------------------------\n');
                test.done();
            });
        });
    }
};

['process1', 'process2'].forEach(function(href) {
    casperActions[href]();
});

Mas não é paralelo, eles são executados um por um. Atualmente, eu faço alguma navegação paralela, mas com o nó não no próprio arquivo, usando o processo filho. Portanto, se você dividir meu código anterior em dois arquivos -proc1.js, proc2.js- (apenas os dois cenários-> casper.test.begin {...}) e iniciar o código abaixo via nó, algo como isso trabalhar com o Linux, eu tenho que procurar a sintaxe equivalente para windows-:

var exec = require("child_process").exec
;

exec('casperjs test proc1.js',function(err,stdout,stderr){
console.log('stdout: ' + stdout);
console.log('endprocess1');
});
exec('casperjs test proc2.js',function(err,stdout,stderr){
console.log('stdout: ' + stdout);
console.log('endprocess2');
});

Meu problema é que os redirecionamentos e abrir novos URLs são bastante longos, então eu quero que alguns deles sejam executados em paralelo. Eu poderia criar arquivos XXX e iniciá-los em paralelo com o nó, mas não quero arquivos XXX com 5 linhas de código, portanto, se alguém conseguiu (se possível) abrir URLs em paralelo no mesmo arquivo de teste sem o nó (portanto sem múltiplos processos), por favor me ensine!

E eu gostaria de saber qual é a diferença entre as instruções de encadeamento ou reutilizar o objeto casper sempre:

então entre isso:

casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) {
    "use strict";
    casper.start()
    .thenOpen(url1,function(){
        this.echo("1","INFO");
    })
    .wait(10000,function(){
        casper.test.comment("If parallel, it won't be print before comment of the second processus !");
    })
    .run(function() {
        this.test.comment('----------------------- First processus over ------------------------\n');
        test.done();
    });
});

E essa :

casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) {
    "use strict";
    casper.start();
    casper.thenOpen(url1,function(){
        this.echo("1","INFO");
    });
    casper.wait(10000,function(){
        casper.test.comment("If parallel, it won't be print before comment of the second processus !");
    })
    casper.run(function() {
        this.test.comment('----------------------- First processus over ------------------------\n');
        test.done();
    });
});

Encadeando minhas instruções, ele bloqueará toda a cadeia se uma das minhas etapas falhar (promessa rejeitada) em vez de executar todas as etapas do casper?

Portanto, seria melhor encadear instruções com etapas dependentes [como thenClick (selector)] e usar o objeto casper com etapas independentes (como abrir uma nova URL), não?

Edit: eu tentei e se um passo falhar, encadeado ou não, ele interromperá todos os próximos passos, então não vejo a diferença usando passos encadeados ou não ...

questionAnswers(2)

yourAnswerToTheQuestion