2017-06-13 16 views
5

Tôi tạo ra một soạn sẵn Phản ứng của dự án, packages.json có các nghi phạm thông thường:Newbie để Selenium E2E với Phản ứng

  • prestart
  • bắt đầu
  • danh sách
  • kiểm tra
  • , vv

Tôi đang sử dụng Selenium cho khung công tác E2E của mình. Tôi có thử nghiệm sau đây:

it('should launch a browser',() => { 

    const By = webDriver.By; 
    let driver = new webDriver.Builder() 
     .forBrowser('chrome') 
     .build(); 

    // verify Continue button exist on page 
    driver.navigate().to('http://localhost:3000').then(() => driver.findElement(By.id('submitButton')).getAttribute('value')) 
     .then(buttonValue => expect(buttonValue).toEqual('Continue')); 

    }); 

Nếu tôi làm npm start, ra mắt trang web của tôi và E2E của tôi ra mắt trình duyệt Chrome bổ sung và điều hướng đến trang web đang chạy của tôi: localhost:3000. Bài kiểm tra thành công.

Câu hỏi của tôi là, làm cách nào để chạy riêng E2E của mình mà không cần trang web của tôi cạnh nhau bằng cách sử dụng npm start.

Tôi là người mới đến React và Selenium, trong trường hợp tôi thiếu rất nhiều thông tin về bài đăng này, tôi xin lỗi trước.

+0

Xin chào Pacman! Tôi nghĩ rằng tôi có thể có một giải pháp cho bạn, nhưng bạn cần phải cập nhật câu hỏi của bạn với nội dung ** package.json ** vì 'packages.json này có các nghi phạm thông thường: prestart start list test etc ...' sẽ không cắt nó. Ngoài ra, ngoài Mocha, bạn có đang sử dụng bất kỳ khung kiểm tra nào khác để cung cấp các liên kết JS của Selenium không? – iamdanchiv

+1

Vâng, trang web của bạn phải chạy ở đâu đó. Nếu nó không chạy trên localhost, nó phải chạy ở một nơi khác, nếu không thì không có gì để kiểm tra. – Sulthan

+0

Pacman, bạn đã đọc câu trả lời của tôi hoặc đề xuất nhận xét? Bạn vẫn muốn gỡ lỗi vấn đề này? Tiền thưởng của bạn đã có trong thời gian gia hạn, vì vậy nếu bạn không thực hiện hành động, tiền thưởng sẽ bị mất. – iamdanchiv

Trả lời

5

Vâng, vì bạn không tìm thấy thời gian để cập nhật thông tin câu hỏi với đối tượng NPM "scripts", sau đó tôi sẽ cố gắng chụp ảnh trong bóng tối.

Trước hết, do cách diễn đạt của bạn, tôi có thể giải thích câu hỏi hai cách của bạn:

  • a) bạn muốn chạy kiểm tra E2E bạnriêng, w/o máy chủ của bạn. chạy (được bắt đầu qua npm start);
  • b.) bạn muốn chạy các thử nghiệm E2E qua npm start, mà không kích hoạt máy chủ của bạn bắt đầu;

a) Nếu bạn muốn chạy script của bạn riêng biệt, nhìn thấy như bạn đang sử dụng Mocha, sau đó bạn có thể kích hoạt chúng thông qua:. ./node_modules/.bin/mocha <pathToTests>/<testFile>.

Bây giờ, kể từ khi bạn được nêu trong câu hỏi của bạn mà bạn đang sử dụng npm test kịch bản, sau đó sẽ chuyển đổi tốt nhất để ràng buộc kiểm tra E2E bạn thực hiện để:

package.json (đối tượng Scripts) :

"scripts": { 
    "test": "mocha --reporter spec <pathToTests>/<testFile>", 
    "start": "node <yourServerName>.js" 
}, 

Xin lưu ý rằng mocha <pathToTests>/<testFile> tương đương với ./node_modules/.bin/mocha <pathToTests>/<testFile>, vì NPM tìm kiếm nhị phân bên trong node_modules/.bin và khi Mocha được cài đặt, nó đã cài đặt nó vào thư mục này.

Lưu ý: Nhiều gói có một bin, hoặc .bin phần, tuyên bố các kịch bản có thể được gọi từ NPM tương tự như Mocha. Nếu bạn muốn tìm hiểu những tệp nhị phân nào khác mà bạn có thể chạy theo cách đó, chỉ cần phát hành một số ls node_modules/.bin.


b.) Trong chăm sóc này, tôi nghĩ vấn đề của bạn có thể là do NPM mặc định một số giá trị kịch bản dựa trên nội dung gói. Cụ thể, nếu bạn có tệp server.js trong thư mục gốc của gói, thì npm sẽ mặc định lệnh bắt đầu là server.js.

Vì vậy, nếu bạn đang bắt đầu kiểm tra E2E bạn qua npm start, có này ("start": "mocha <pathToTests>/<testFile>") trong bạn package.json và có một server.js tập tin trong thư mục gốc của gói của bạn, sau đó sẽ NPM mặc định lệnh bắt đầu là node server.js.

Trong trường hợp này, bạn có thể di chuyển tập lệnh máy chủ của mình đến một địa điểm khác trong dự án hoặc thay đổi công tắc bạn đang sử dụng để kích hoạt thử nghiệm E2E (see section b.)).

Hy vọng điều này sẽ giải quyết được vấn đề của bạn và nếu không, hãy chờ đợi đối tượng package.json"scripts" để chúng tôi thực sự có thể xem có gì. :)

Chúc mừng!

Các vấn đề liên quan