2014-01-16 4 views
2

브라우저 스 택 기능의 행렬에 대해 grun을 통해 cucumberjs 테스트를 실행하려고합니다.grunt cucumberjs 여러 병렬 실행

매트릭스는 "툴툴 거리는 소리는"일반적으로 (qcuberbatch 로컬 툴툴 작업 정의가) 구성 :

grunt.initConfig 
    qcumberbatch: 
     options: 
      steps: 'src/features/integration/steps' 
      tags: '[email protected]' 
      browserstack: 
       'browserstack.user' : process.env.BS_USER 
       'browserstack.key' : process.env.BS_ACCESS_KEY 
       'browserstack.tunnel' : 'true' # This was the secret! 

      matrix: [ 
       browser: 'firefox' 
       browser_version: '26.0' 
       os: 'Windows' 
       os_version : '7', 
      , 
       browser : 'IE', 
       browser_version : '9.0', 
       os : 'Windows', 
       os_version : '7', 
       resolution : '1024x768' 
      ] 
      hub: "http://hub.browserstack.com/wd/hub" 

     local: 
      files: 
       src: ['src/features/integration/*'] 
      options: 
       hub: 'http://localhost:4444/wd/hub' 
       matrix: ['firefox'] 

     browserstack: 
      files: 
       src: ['src/features/integration/*'] 

     failing: 
      files: 
       src: ['src/features/integration/*'] 
      options: 
       tags: '@ShouldFail' 

기본 옵션은 현지 테스트 browserstack를 오버라이드 (override)으로, Windows 7에서 파이어 폭스와 IE를 사용 browserstack에 대해 실행이 로컬 셀레늄 웹 드라이버 허브를 사용합니다.

가 오이의 세계는 생성자가 기능을 복용 설정은 객체 : 꿀꿀에서이 작업을 실행할 때

module.exports = class World 
    ### 
    Create a new world, assuming firefox capabilities. 

    @param {string} browser property name from the `webdriver.Capabilities` 
     list. 
    ### 
    constructor: (capabilities = {browserName: "firefox"})-> 
     @driver = new webdriver.Builder(). 
      usingServer(process.env.SELENIUM_HUB). 
      withCapabilities(capabilities).build() 

     @driver.manage().timeouts().setScriptTimeout(10000) 

문제, (내가 볼 것을) cucumberjs 더 프로그래밍 인터페이스가 없다는 것입니다. 런타임에로드 할 여러 기능 블록 중 어떤 것을 구성 할 수있는 능력이 없으면 오이클 실행과 툴툴 거리기 기능간에 통신 기능을 제공하려면 어떻게해야합니까?

답변

0

가능한 해결 방법 :

는 모든 기능의 덩어리로 툴툴 거리는 소리 파일의 알려진 위치에 파일을 작성합니다. 그런 다음 프로세스 환경 변수를 사용하여 여러 큐브를 실행하여 blob에서 사용할 기능을 전 세계에 알립니다.

실행하는 동안 임시 파일을 생성하는 것과 관련하여 나는 이것을 좋아하지 않는다. 나는 World 객체를 구성 할 때 프로그래밍 방식으로 cucumberjs를 사용하는 방법을 찾는 것을 선호한다.

+0

이러한 아이디어를 바탕으로 env var에 JSON으로 기능을 전달하는 방법은 무엇입니까? 그런 다음 JSON 문자열을 구문 분석하여 객체를 다시 가져옵니다. – jbpros

1

내가 제안한대로 솔루션과 JSON 개체를 사용하고 싶습니다.

그러나 프로그래밍 방식에 더 관심이 있다면 아주 쉽게 오이 런타임을 인스턴스화 할 수 있습니다. CLI 소스는 매우 간단하며 코드에서 Cucumber를 호출하는 좋은 예입니다. https://github.com/cucumber/cucumber-js/blob/master/lib/cucumber/cli.js을 참조하십시오.

+0

CLI에 연결하는 방법을 고려해 보았습니다.하지만 필요한 단계 파일의 파일에 기능이 있어야합니다. 제 견해로, 지원 코드 로더는 런타임이 단계 정의가있는 오브젝트에서 전달되는 것을 허용하지 않고 파일 경로에서 코드를로드하는 데에만 문제가 있습니다. 그러나 다른 페이지에는 다양한 아키텍처 문제가 있습니다. 아마도이 질문의 범위를 벗어난 것입니다. 이것을 github의 0.6 용 향상 기능으로 게시 한 경우 API를 변경 하시겠습니까? –

+0

물론 개선 할 수 있습니다. 브라우저 컨텍스트에서 지원 코드를 삽입하는 방법을 확인 했습니까? 그것은 도움이 될 수 있습니다. https://github.com/cucumber/cucumber-js/blob/master/example/example.js#L80 – jbpros

+0

흠, 나는 그것을 보지 못했습니다. 나는 한 번 봐서 뭔가를 게시 할 것입니다. –