2013-09-28 8 views
39

Ich möchte den Winkelmesser mit einem Gerüst von Yeoman integrieren. Ich folgte einem Tutorial und darin wurde das ältere scenario-runner zum Einrichten von e2e-Tests verwendet (über grunt).Integrierender Winkelmesser mit Yeoman über Grunt

Ich möchte mein Gerüst aufrüsten und stattdessen Winkelmesser verwenden.
Irgendwelche Gedanken?

+0

Hinzufügen einer Konfigurationsdatei wie Winkelmessers Einstiegsanleitung sagt mit dem Speicherort Ihrer Spezifikation Dateien und dann Installation von Winkelmesser ist der Weg zu gehen. Oder Sie können linemanjs überprüfen, das wie yeoman ist und Winkelmesser eingebaut hat :) –

+2

Für AngularJs ist yeoman gut ich denke, weil es mit buildup auch bt ist, benutzt er Karma für e2e Tests und ich möchte Winkelmesser verwenden, wie Winkelmesser integrieren kann in gruntjs datei in yeoman – user2733090

Antwort

85
  1. Installieren protractor und grunt-protractor-runner von npm:

    npm install protractor grunt-protractor-runner --save-dev 
    
  2. Erstellen einer Konfigurationsdatei für Transporteur (protractor.conf.js), ändern specs und baseUrl auf Ihre Testdateien und Testserver:

    exports.config = { 
        seleniumAddress: 'http://localhost:4444/wd/hub', 
        specs: ['test/e2e/*_test.js'], 
        baseUrl: 'http://localhost:9001' //default test port with Yeoman 
    } 
    
  3. Aktualisieren Sie Ihre Gruntfile.js, fügen Sie die folgenden nach der Karma Aufgabe:

    protractor: { 
        options: { 
        keepAlive: true, 
        configFile: "protractor.conf.js" 
        }, 
        run: {} 
    } 
    
  4. das Geodreieck Aufgabe

    grunt.registerTask('test', [ 
        'clean:server', 
        'concurrent:test', 
        'autoprefixer', 
        'connect:test', 
        'karma', 
        'protractor:run' 
    ]); 
    
  5. Herunterladen unter Test hinzufügen und den Selen-Server starten:

    node_modules/protractor/bin/webdriver-manager update 
    node_modules/protractor/bin/webdriver-manager start 
    

    (in Windows:)

    node node_modules/protractor/bin/webdriver-manager update 
    node node_modules/protractor/bin/webdriver-manager start 
    
  6. Aktualisieren Sie Ihre package.json, fügen Sie folgende nach "devDependencies" hinzu. Dadurch wird der Befehl nach npm install ausgeführt, sodass Sie sich nicht jedes Mal daran erinnern müssen.

    "scripts": { 
        "install": "node node_modules/protractor/bin/webdriver-manager update" 
    } 
    
  7. den Testlauf Grunzen

    grunt test 
    

mit der Wenn Sie Winkelmesser wollen den Server für Sie starten, entfernen

seleniumAddress: 'http://localhost:4444/wd/hub', 

von protractor.conf.js, dann grunt test laufen beginnt eine eigenständige Selenium-Instanz während des Tests und beenden Sie sie nach runni ng der Testsuite.

+3

Checkout Matt Briggs '[grunt-start-webdriver] [(https://github.com/mbriggs/grunt-start-webdriver/blob/master/README.md) Aufgabe. Diese Grunt-Task führt 'webdriver-manager start' aus und blockiert den Grunt-Build, bis der Webdriver bereit ist, Verbindungen zu akzeptieren. –

+1

@SteveJansen Schön, in der Tat, wenn Sie nicht die Option selenAddress in Winkelmesser Konfig-Datei angeben, startet Winkelmesser den Server automatisch, wenn Sie Webdriverwanager-Update zuvor ausgeführt haben. – user2172816

+3

Ich musste auch hinzufügen 'grunt.loadNpmTasks (" grunt-Winkelmesser-Runner ")' oberhalb der 'grunt.registerTask' –

10

Eine Sache, die zu der bestehenden Antwort hinzugefügt werden muss; Wenn Sie den Selenium-Server automatisch starten möchten, müssen Sie auch den Standort von selenServerJar und chromeDriver (bei Verwendung von Chrome) angeben, da sonst die Tests nicht funktionieren, bis Sie den Selenium-Server manuell starten (stellen Sie sicher, dass "webdriver- Manager update“von der Kommandozeile zuerst):

protractor: { 
     options: { 
      keepAlive: false, 
      configFile: "test/config/protractor.conf.js", 
      noColor: true, // If true, protractor will not use colors in its output. 

      args: { 
       seleniumServerJar: 'node_modules/protractor/selenium/selenium-server-standalone-2.39.0.jar', 
       chromeDriver: 'node_modules/protractor/selenium/chromedriver.exe' 
      } 
     }, 
     run: { 

     } 
    }, 
+1

Ich musste dies nicht in meinem Rechner tun. Vielleicht ist eine Windows-Sache? –

+1

Ja, ich benutze Windows und ohne die oben genannten würde der Server nicht automatisch starten. Sobald dies hinzugefügt wurde, funktionierte alles korrekt. –

+0

@AlwaysLearning Kennen Sie den Dateipfad zu den beiden 'args' für einen Mac? – Danger14

5

Wie @user2172816 erwähnt in ihrer Antwort - seleniumAddress: 'http://localhost:4444/wd/hub' von Ihrem Winkelmesser Config Weglassen wird in der Regel protractor verursacht eine Selen-Instanz für Sie zu starten.

Als Alternative könnten Sie grunt-protractor-webdriver verwenden Selen zu starten:

1) Installieren und Grunzen-Transporteur-WebDriver

npm install grunt-protractor-webdriver --save-dev 

2) Fügen Sie den folgenden in Ihre Grunt Definition speichern Funktion:

grunt.loadNpmTasks('grunt-protractor-webdriver'); 

3) Fügen Sie Folgendes hinzu Beispiel Winkelmesser WebDriver Aufgabe:

protractor_webdriver: { 
     start: { 
      options: { 
       path: 'node_modules/protractor/bin/', 
       command: 'webdriver-manager start' 
      } 
     } 
    } 

4) hinzufügen protractor_webdriver auf Ihre test Aufgabe vor dem Ausführen Winkelmesser z.B.

grunt.registerTask('test', [ 
    'clean:server', 
    'concurrent:test', 
    'autoprefixer', 
    'connect:test', 
    'karma', 
    'protractor_webdriver', 
    'protractor:run' 
]); 
Verwandte Themen