Protractor: ์‹คํŒจ: ๊ฐ๋„๊ธฐ๊ฐ€ ํŽ˜์ด์ง€์™€ ๋™๊ธฐํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜: "์ฐฝ์—์„œ ๊ฐ๋„๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"

์— ๋งŒ๋“  2015๋…„ 01์›” 28์ผ  ยท  52์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: angular/protractor

Protaractor๋ฅผ 1.6.1, webdriver, chromedriver, jasmine์„ 2.0์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

"Using ChromeDriver directly...
[launcher] Running 1 instances of WebDriver
Start test TC06_01_01_Binary_1_1
Started
Execute test TC06_01_01_Binary_1_1
Login as Admin
Execute script no 18
F

Failures:
1) TC06_01_01_Binary_1_1 TC06_01_01_Binary_1_1 Should be able to add record with different values
  Message:
    Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
  Stack:
    Error: Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
       at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:104:1
6
        at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\go
og\base.js:1582:15
        at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\E2Euser\AppData\Roaming\npm\
node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
        at notify (C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdrive
r\lib\webdriver\promise.js:465:12)
  Message:
    Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the windo
w"
  Stack:
    Error: Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on th
e window"
        at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:104:1
6
        at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\go
og\base.js:1582:15
        at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\E2Euser\AppData\Roaming\npm\
node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
        at notify (C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdrive
r\lib\webdriver\promise.js:465:12)
  Message:
    Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on the windo
w"
  Stack:
    Error: Failed: Error while waiting for Protractor to sync with the page: "angular could not be found on th
e window"
        at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\jasminewd2\index.js:104:1
6
        at C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\go
og\base.js:1582:15
        at [object Object].webdriver.promise.ControlFlow.runInNewFrame_ (C:\Users\E2Euser\AppData\Roaming\npm\
node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1654:20)
        at notify (C:\Users\E2Euser\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdrive
r\lib\webdriver\promise.js:465:12)

1 spec, 1 failure
Finished in 1.409 seconds
[launcher] 0 instance(s) of WebDriver still running
[launcher] chrome #1 failed 1 test(s)
[launcher] overall: 1 failed spec(s)
[launcher] Process exited with error code 1"

Angular๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ์•„์‹ญ๋‹ˆ๊นŒ? ๋˜๋Š” ์ด๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

needs investigation

๋ชจ๋“  52 ๋Œ“๊ธ€

๋‚˜๋Š” ์‹ค์ œ๋กœ OSX์—์„œ ์ด์™€ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช์—ˆ์Šต๋‹ˆ๋‹ค.

... snip ...
Running "connect:test" (connect) task
Started connect web server on http://localhost:9001

Running "protractor:run" (protractor) task
Using the selenium server at http://127.0.0.1:4444/wd/hub
[launcher] Running 1 instances of WebDriver
Uncaught exception: Error while waiting for Protractor to sync with the page: "angular could not be found on the window"
[launcher] Process exited with error code 1
>>
Fatal error: protractor exited with code: 1
... snip ...

๊ทธ ํ›„ ์—ด๋ฆฐ Chrome ์ธ์Šคํ„ด์Šค๋Š” ์ค‘๋‹จ๋œ ์ƒํƒœ๋กœ ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ Mac OS์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ„ฐ๋ฏธ๋„๊ณผ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ณ  ์ด ์˜ค๋ฅ˜๋ฅผ ๋‹ค์‹œ ์—ฌ์‹ญ์‹œ์˜ค(์ตœ์†Œํ•œ ๋ฉ€๋ฆฌ).

2.0.0 ๋ฒ„์ „์—์„œ๋„ ์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ฌ์ง€์–ด ๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

2015๋…„ 4์›” 1์ผ ์ˆ˜์š”์ผ ์˜ค์ „ 11:03 Walter H. Roman [email protected]
์ผ๋‹ค:

๋ฒ„์ „ 2.0.0์—์„œ๋„ ์ด๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/angular/protractor/issues/1760#issuecomment -88355894.

์ €๋„ ์š”

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

1.8.0์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

onPrepare ํ•จ์ˆ˜ ๋‚ด์—์„œ browser.get() ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๊นŒ? #1978 ์ฐธ์กฐ

๋‚˜๋Š” browser.get()์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ onPrepare๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. angular todomvc์— ๋Œ€ํ•ด ์ด ์˜ˆ์ œ๋ฅผ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค - https://github.com/mknabe/angular-testing-starter/blob/ ๋งˆ์Šคํ„ฐ/ํ…Œ์ŠคํŠธ/e2e/scenarios.js

์ถฉ๋Œ...

@cm325 ์™€ ๊ฐ™์ด 2.0.0์„ ์‹คํ–‰ํ•  ๋•Œ "์ฐฝ์—์„œ ๊ฐ๋„๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ 1.8.0์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ถฉ๋Œ!

v2.1.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„์—๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 1.8.0์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

OSX์—์„œ๋„ ์ด์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ

์ˆ˜์ •๋จ - ์ˆ˜์ •๋จ

๊ทธ๋ž˜์„œ ๋‚ด ํŽ˜์ด์ง€ ์ƒ์„ฑ์ž ์ค‘ ํ•˜๋‚˜์—์„œ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

this.currentUrl =  browser.getCurrentUrl();

NS

this.currentUrl = function(){
    return browser.getCurrentUrl();
  };

๋‚ด ํ…Œ์ŠคํŠธ๋Š” ์ž˜ ์‹คํ–‰๋˜๊ณ  ์žˆ์—ˆ๊ณ  ์•„๋ฌด ์ด์œ  ์—†์ด ์ด๊ฒƒ์ด ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ์ด๋‚˜ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. 2.0์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. currentUrl์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ˆ˜ํ–‰ํ–ˆ๋Š”๋ฐ ๊ทธ๊ฒƒ๋„ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋„์›€๋„ ๊ต‰์žฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค..

์›”์š”์ผ์—๋„ ๊ฐ™์€ ๊ฒฝํ—˜์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ง€๋‚œ ๊ธˆ์š”์ผ์—๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ์•˜๊ณ  ์›”์š”์ผ๋ถ€ํ„ฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•ด์•ผ ํ•  ๋•Œ(Angular๊ฐ€ ์•„๋‹Œ ํŽ˜์ด์ง€) ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ฐ๋„๊ธฐ๋ฅผ 1.8.0 ๋ฐ 1.4.0์œผ๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ 'jasmine2'๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‹ค์‹œ ์•„๋ฌด ๊ฒƒ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” onPrepare์—์„œ browser.get์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌด์—‡์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ๋ฌด์—‡์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ณ ๋งˆ์›Œ!

์ €๋„ ์—ฌ๊ธฐ์„œ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. : ๋” ๋งŽ์€ ๊ด€์‹ฌ์„ ๋Œ๊ธฐ ์œ„ํ•ด ์ฃผ๋จน์„ ์ฅก๋‹ˆ๋‹ค .
2.1.0์—์„œ 1.8.0์œผ๋กœ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œํ•ด๋„ ์ฆ‰์‹œ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ...

๋‚˜๋„ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ์•ˆ๊ณ ์žˆ์–ด. ๋ฐฉ๊ธˆ ์˜ค์ด-js, chai ๋ฐ chai-as-promised๋กœ ๊ฐ๋„๊ธฐ๋ฅผ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ƒ˜ํ”Œ ๋‹จ๊ณ„์— ๋Œ€ํ•ด ํ…Œ์ŠคํŠธํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋งค์šฐ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ SystemJS๋กœ ๋ฏธ๋ฆฌ ๋ณ€ํ™˜๋˜์–ด ๋กœ๋“œ๋œ ES6์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ์€ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์˜๋„์ ์œผ๋กœ ์‹คํŒจํ•˜๋„๋ก ๋‚ด ํŠน์ • ๋‹จ๊ณ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ฒซ ๋ฒˆ์งธ/๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ๋˜๋Š” ์™œ ๊ทธ๊ฒƒ์ด ํŠน์ •ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‘ ๋‹จ๊ณ„ ๋ž˜ํผ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

var Promise = require('es6-promise').Promise;
var World = require("../support/world.js").World;

module.exports = function() {
    this.World = World;

    this.Given(/^Something exists$/, function() {
        browser.get('http://localhost:3000/');
        return Promise.all([
            expect(browser.getCurrentUrl()).to.eventually.equal('http://localhost:3000/#/dashboard'),
            expect(browser.getTitle()).to.eventually.equal('Dashboard')
        ]);
    });
};

์•ˆ๋…• ์–˜๋“ค์•„! ์šฐ๋ฆฌ๋Š” ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆํ–‰ํžˆ๋„ ๋ฌธ์ œ๊ฐ€ ๊ฐ๋„๊ธฐ ๋ฐ ์žฌ์Šค๋ฏผ ๊ธฐ์ž ๋ฒ„์ „ ๋˜๋Š” ๋‹ค๋ฅธ ๋ฒ„์ „์— ์žˆ๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์˜ ์–ด๋Š ์‹œ์ ์—์„œ ์šฐ๋ฆฌ๋Š”

element(by.id('logIn')).click().then(function (p) {
                browser.driver.wait(browser.driver.isElementPresent(by.id('Email')));
            });;

๊ทธ๋ฆฌ๊ณ  ๊ทธ์™€ ๊ฐ™์€ ๋ช‡ ๊ฐ€์ง€๊ฐ€ ๋” ์žˆ๊ณ  ์ด๋Ÿฌํ•œ ๋Œ€๊ธฐ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ตœ์„ ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ์ž‘๋™ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ฒซ ๋ฒˆ์งธ ์š”์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@Yok86 ๋ฐฉ๊ธˆ ์ˆ˜์ •์„ ์‹œ๋„ํ–ˆ๊ณ  ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค! :+1:

์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋ณด๋‹ค ๊น”๋”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” onPrepare ํ•ธ๋“ค๋Ÿฌ์˜ ๋์— browser.debugger() ๋ฅผ ๋˜์กŒ๊ณ  ํ”Œ๋ ˆ์ด์—์„œ ํƒ€์ด๋ฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์ง€๋งŒ ์™œ ๊ทธ๋Ÿฐ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ›จ์”ฌ ๊นจ๋—ํ•ฉ๋‹ˆ๋‹ค.

browser.driver.findElement(by.xpath("//*[@id='submit']")).click().then(function(p) {
      browser.driver.wait(browser.driver.getTitle().then(function (title) {
        return title == 'AppName';
      }));
    });

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํŒจ: ๊ฐ๋„๊ธฐ๊ฐ€ ํŽ˜์ด์ง€์™€ ๋™๊ธฐํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜: "[ng:test] getTestability\ nhttp://errors.angularjs.org/1.4.5/ng/test์— ๋Œ€ํ•œ ์š”์†Œ ์ธ์ˆ˜์— ๋Œ€ํ•œ ์ธ์ ํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ"
์Šคํƒ:
์˜ค๋ฅ˜: ์‹คํŒจ: ๊ฐ๋„๊ธฐ๊ฐ€ ํŽ˜์ด์ง€์™€ ๋™๊ธฐํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜: "[ng:test] getTestability\ nhttp://errors.angularjs.org/1.4.5/ng/test์— ๋Œ€ํ•œ ์š”์†Œ ์ธ์ˆ˜์— ๋Œ€ํ•œ ์ธ์ ํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค
์Šคํƒ์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:1482:17)
buildExpectationResult์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:1452:14)
Spec.Env.expectationResultFactory์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:583:18)
Spec.addExpectationResult์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:324:34)
Suite.addExpectationResult์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:2123:38)
Env.fail์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:894:25)
Function.next.fail์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\jasmine-core\lib\jasmine-core\jasmine.js:1806:19)
c:\Program Filesnodejsnode_modules\protractornode_modules\jasminewd2index.js:101:16
[๊ฐœ์ฒด ๊ฐœ์ฒด].promise.ControlFlow.runInFrame_์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:1877:20)
[๊ฐœ์ฒด ๊ฐœ์ฒด].promise.Callback_.goog.defineClass.notify์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:2464:25)
[๊ฐœ์ฒด ๊ฐœ์ฒด].promise.Promise.notify_ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:563:12)
Array.forEach์—์„œ(๋„ค์ดํ‹ฐ๋ธŒ)
Object.goog.array.forEach์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\goog\array\array.js:203:43)
[๊ฐœ์ฒด ๊ฐœ์ฒด].promise.Promise.notifyAll_ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\webdriver\promise.js:552:16)
goog.async.run.processWorkQueue์—์„œ (c:\Program Filesnodejsnode_modules\protractornode_modules\selenium-webdriver\lib\goog\async\run.js:125:21)
process._tickCallback์—์„œ (node.js:356:9)

phantomjs๋กœ ์‹คํ–‰ํ•  ๋•Œ OSX์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Chrome์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ๋„๊ธฐ๊ฐ€ ํŽ˜์ด์ง€์™€ ๋™๊ธฐํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜: "[ng:test] http://errors.angularjs.org/1.4.3/ng/test "

์—ฌ๊ธฐ์— ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์„œ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์ด์ œ ์ž‘๋™์„ ๋ฉˆ์ท„์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋˜ํ•œ์ด ๋ฌธ์ œ๋ฅผ ๊ฒช๊ณ ์žˆ๋‹ค

+1 ์ง€๋‚œ ๊ธˆ์š”์ผ์€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ฒฉ๋ฆฌ๋˜๊ณ  ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด๊ฒƒ์„ ์Šค์Šค๋กœ ์•ˆ์ •์ ์œผ๋กœ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค(์†”์งํžˆ ๋งํ•ด์„œ, ๋‚˜๋Š” ์•„์ง ํŒŒํ—ค์น˜์ง€ ์•Š์•˜๋‹ค).

์—ฌ๊ธฐ์— ์žˆ๋Š” ์ผ๋ถ€ ๊ฒŒ์‹œ๋ฌผ์„ ์š”์•ฝํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฒ„์ „: ๊ฐ๋„๊ธฐ 2.x.x ( 1.6.x ์˜ OP ๋ฌธ์ œ ์ œ์™ธ)
  • ํ”„๋ ˆ์ž„์›Œํฌ: ์žฌ์Šค๋ฏผ 2
  • ๋ธŒ๋ผ์šฐ์ €: Chrome ๋ฐ PhantomJS
  • ํ”Œ๋žซํผ: OSX ๋ฐ Windows
  • Angular/Non-Angular ํŽ˜์ด์ง€: ???

๋ถˆํ–‰ํžˆ๋„ ๊ฝค ๊ด‘๋ฒ”์œ„ํ•ฉ๋‹ˆ๋‹ค :(

@jessiahr @navarrojp @AndreasMaier ์ด ๋””๋ฒ„๊น…์„ ๋•๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ์œผ์‹ญ๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ์กฐ์ •์„ ์œ„ํ•ด gitter room์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ:

  • ๋ฒ„์ „: ๊ฐ๋„๊ธฐ 2.5.1
  • ํ”„๋ ˆ์ž„์›Œํฌ: ์žฌ์Šค๋ฏผ 2
  • ๋ธŒ๋ผ์šฐ์ €: ํฌ๋กฌ
  • ํ”Œ๋žซํผ: OSX
  • ๊ฐ๋„ ํŽ˜์ด์ง€

@mrzmyr ์ž์„ธํ•œ ๋‚ด์šฉ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ ๋ฐ ๊ฒฉ๋ฆฌ๋œ ์˜ˆ์ œ ์‚ฌ์–‘์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@NickTomlin ์˜ˆ์ œ ์‚ฌ์–‘์ด๋‚˜ ์ด์™€ ์œ ์‚ฌํ•œ ๊ฒƒ์„ ๊ฐ–๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ์žฌํ˜„ํ•˜๋Š” ๊ฒƒ์กฐ์ฐจ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ์œ„ํ•ด ํƒ€์ด๋ฐ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ตฌ์„ฑ์—๋Š” onPrepare๊ฐ€ ์žˆ๊ณ ์ด ์ค„์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋ธŒ๋ผ์šฐ์ €.๋“œ๋ผ์ด๋ฒ„.get(targetUrl);

์ด ์˜ค๋ฅ˜๋Š” ์‹œ๊ฐ„์˜ ์•ฝ 40%์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์–ด์งธ์„œ.

์žฌ์Šค๋ฏผ 2.XX

@mrzmyr ์™€ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€

๋ฒ„์ „: ๊ฐ๋„๊ธฐ์˜ ์ตœ์‹  ๋ฒ„์ „
ํ”„๋ ˆ์ž„์›Œํฌ: ์žฌ์Šค๋ฏผ 2
๋ธŒ๋ผ์šฐ์ €: ํฌ๋กฌ
ํ”Œ๋žซํผ: OSX
๊ฐ๋„ ํŽ˜์ด์ง€

1.8๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด์ œ ์‹คํ–‰๋˜์—ˆ์œผ๋ฏ€๋กœ ์ด์ƒํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ฅด๋ฉด ์žฌํ˜„ ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์—ฌ๊ธฐ ์ฐธ์กฐ. ํŠœํ† ๋ฆฌ์–ผ์ด ๊ฐ€์žฅ ์ •ํ™•ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ๋„๊ธฐ@2.5.1
ํ”Œ๋žซํผ: OSX
๋ชจ๋‚œ
ํ”„๋ ˆ์ž„์›Œํฌ: Jasmine2
๋ธŒ๋ผ์šฐ์ €: ํฌ๋กฌ

์ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ browser.get ์ด์™ธ์˜ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผ์ข…์˜ ํƒ์ƒ‰์ด ์ˆ˜ํ–‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. browser.get , URL ๋ณ€๊ฒฝ ์™ธ์—๋„ ๊ฐ๋„๊ฐ€ ๋กœ๋“œ๋˜๊ณ  ๊ฐ๋„๊ธฐ๋ฅผ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

@61ue5peed ๋ฌธ์ œ๋Š” browser.driver.get ๊ฐ€ ๋™์ผํ•œ ๋™๊ธฐํ™” ๋ฐ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์›์ธ์—์„œ ์ €๋Š” browser.driver.get ์—์„œ browser.get

@jennapederson ๊ท€ํ•˜์˜ ๊ฒฝ์šฐ #becomeAwesome ๊ฐ€ ๋งํฌ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋™๊ธฐํ™” ๋ฐ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์—†์ด ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ ๋งํฌ๋ฅผ ํด๋ฆญํ•œ ํ›„ browser.refresh ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์ œ๋ณด๋“ค๋„ ๋น„์Šทํ•œ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ์ด ๋ฌธ์ œ๋ฅผ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ํƒ์ƒ‰์„ ์œ„ํ•ด borwser.get ์—๋งŒ ์˜์กดํ•˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” v 3.3.1์—์„œ ์—ฌ์ „ํžˆ ์žฌํ˜„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ํ™ˆํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ธฐ ์œ„ํ•ด browser.get์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ฒ˜์Œ์—๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„ ๋ชจ๋‘์—๊ฒŒ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด -> ์ œ ๊ฒฝ์šฐ์—๋Š” Facebook API๋ฅผ ๋กœ๋“œํ•˜๋Š” ์™ธ๋ถ€ ๊ฐ๋„ ๋ชจ๋“ˆ์ด ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. ํŽ˜์ด์Šค๋ถ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ๋„ ์•ฑ ๋‚ด์˜ dom ๊ตฌ์กฐ์— ์•ก์„ธ์Šคํ•˜์—ฌ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹œ Facebook ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๋„๋ก ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. ์ž์ฃผ๋Š” ์•„๋‹ˆ์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋  ์ •๋„์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ผ๋ฐ˜ Angular ํŽ˜์ด์ง€์ด๋ฉฐ ์™ธ๋ถ€ ๋˜๋Š” ๋น„ ๊ฐ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ๋Š” ๋Œ€๋ถ€๋ถ„ ํ†ต๊ณผํ•˜์ง€๋งŒ ๋•Œ๋•Œ๋กœ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜ํƒ€๋‚˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‹ฌ์ด ๋กœ๋“œ๋  ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ฐ™์€ ๋‹จ๊ณ„/ํ…Œ์ŠคํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ๋„๊ธฐ: 3.2.2
์˜ค์ด ๊ฐ๋„๊ธฐ: 0.4.0

@drcjones
element(by.css(selector)).isPresent().then(ํ•จ์ˆ˜(๊ฒฐ๊ณผ) {
if (๊ฒฐ๊ณผ) {
element(by.css(selector)).click();
}
}, 20000);

์•ˆ๋…•ํ•˜์„ธ์š”,

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์˜ ์ œ๋ชฉ์„ ์–ป์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ญ”๊ฐ€ ์ž˜๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

Failed: Angular could not be found on the page http://thetestroom.com/jsweba

pp/ : ๊ฐ๋„๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์Œ resumeBootstrap
์Šคํƒ:
์˜ค๋ฅ˜: http://thetestroom.com/jswebap ํŽ˜์ด์ง€์—์„œ Angular๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
p/ : ๊ฐ๋„๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์Œ resumeBootstrap

` beforeEach(ํ•จ์ˆ˜() {

    browser.get('http://thetestroom.com/jswebapp/');
});

it('should test webpage title', function() {
    expect(browser.getTitle()).toEqual('Zoo Adoption | Home');
});`

์–ด๋–ค ํ”ผ๋“œ๋ฐฑ๋„ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ๋ชฉ์„ ์–ป๊ธฐ ์ „์— Angular๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ์š”์†Œ์˜ ํŠน์ • URL ๋ณ€๊ฒฝ์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋„์›€์ด ๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

browser.get(testUrl).then(ํ•จ์ˆ˜() {
๋ธŒ๋ผ์šฐ์ €.๋Œ€๊ธฐ(ํ•จ์ˆ˜() {
๋ฐ˜ํ™˜ browser.getCurrentUrl().then(function(url) {
๋ฐ˜ํ™˜ /thetestroom/.test(url);
});
}, 10000);
});

์šฐ๋ฆฌ๋Š” IE9์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๊ฐ„ํ—์ ์œผ๋กœ ๋ณด๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. 3.2.1์—์„œ 3.3.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋™์ผ - 3.2.1์—์„œ 3.3.0์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํฌ๋กฌ์„ ์‚ฌ์šฉํ•˜์—ฌ. ๋ชจ๋“  ์ œ์•ˆ์€ ๊ต‰์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”

config.js

export.config = {
์ง์ ‘ ์—ฐ๊ฒฐ: ์‚ฌ์‹ค,
allScriptsTimeout: 1000,

// ์›น๋“œ๋ผ์ด๋ฒ„ ์ธ์Šคํ„ด์Šค์— ์ „๋‹ฌ๋  ๊ธฐ๋Šฅ.
๋Šฅ๋ ฅ: {
'๋ธŒ๋ผ์šฐ์ € ์ด๋ฆ„': 'ํฌ๋กฌ'
// '๋ธŒ๋ผ์šฐ์ € ์ด๋ฆ„': 'ํŒŒ์ด์–ดํญ์Šค'
},

// ์‚ฌ์šฉํ•  ํ”„๋ ˆ์ž„์›Œํฌ. ์ž์Šค๋ฏผ์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋ ˆ์ž„์›Œํฌ: '์žฌ์Šค๋ฏผ',

// ์‚ฌ์–‘ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์— ์ƒ๋Œ€์ ์ž…๋‹ˆ๋‹ค.
// ๊ฐ๋„๊ธฐ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
// ์‚ฌ์–‘: ['example_spec.js'],
์‚ฌ์–‘: ['*_spec.js'],

์…€๋ ˆ๋Š„ ์ฃผ์†Œ: ' http://localhost :8080/McacApp/index.html',
baseUrl: ' http://localhost :8080/McacApp/index.html',

// ๊ฐ๋„๊ธฐ-conf.js
rootElement: '.mcacApp',
// Jasmine์— ์ „๋‹ฌํ•  ์˜ต์…˜.
jasmineNodeOpts: {
๊ธฐ๋ณธ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๊ฐ„๊ฒฉ: 30000,

baseUrl: 'http://localhost:8080/McacApp/index.html',
jasmineNodeOpts: {
  onComplete: null,
  isVerbose: false,
  showColors: true,
  includeStackTrace: false
}

}

};
example.spec.js

describe('๋น ๋ฅธ ํ…Œ์ŠคํŠธ', function() {

it('Should do something', function() {

    browser.get('http://localhost:8080/McacApp/index.html');
   element(by.model('ctrl.formData.emailAddress')).sendKeys('emailAddress');
  // element(by.model('ctrl.formData.employmentType')).sendKeys('employmentType');
  element(by.xpath("//button[text()='Confirm']")).click();
  browser.sleep(10000);


    //expect (element(by.xpath("//ui-view/div/div[2]/div[1]/a/div/p"))).toEqual("Manage users and teams.");
    //expect(element(by.xpath("//ui-view/div/div[2]/div[2]/a/div/p"))).toEqual("Define metrics that drive your business.");
    //expect(element(by.xpath("//ui-view/div/div[2]/div[3]/a/div/p"))).toEqual("Create and modify leaderboards that display metrics.");

});

});

@Karpo72 : ์ด๋ฉ”์ผ ๋ฐ ์—ฐ๋ฝ์ฒ˜ ํ™•์ธ์„ ์œ„ํ•ด ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•ด ์ฃผ

์˜ค๋ฅ˜: ์‹คํŒจ: ๊ฐ๋„๊ธฐ๊ฐ€ ํŽ˜์ด์ง€์™€ ๋™๊ธฐํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜: "[ng:test] http://errors.angularjs.org/1.4.7/ng/test "

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@reddynr ๋‚˜๋Š” ๋‹น์‹ ์ด ํŽ˜์ด์ง€๋ฅผ .get()ํ•œ ํ›„์— ์š”์†Œ๋‚˜ ๋ฌด์—‡์ด๋“  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์—์„œ ์œ„์˜ ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ท€ํ•˜์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
browser.get(..).then(function() { browser.driver.wait(browser.driver.isElementPresent(by.model('ctrl.formData.emailAddress'))); // all remaining sendKeys, submit and assert code here. });

@srajagopalan1712 ํ”ผ๋“œ๋ฐฑ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๋‚ด ๊ตฌํ˜„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ œ์•ˆ์ด ์žˆ์œผ๋ฉด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์„ค๋ช…('mcacapp', function() {
it('์ด๋ฉ”์ผ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ', function()
{
browser.get('http://localhost:8080/McacApp/index.html').then(ํ•จ์ˆ˜() {
๋ธŒ๋ผ์šฐ์ €.๋Œ€๊ธฐ(ํ•จ์ˆ˜() {
๋ฐ˜ํ™˜ browser.getCurrentUrl().then(function(url) {
๋ฐ˜ํ™˜ /thetestroom/.test(url);
});
}, 10000);

});
์š”์†Œ(by.model('ctrl.formData.emailAddress')).sendKeys('[email protected]');
var ์ธ์‚ฌ๋ง = ์š”์†Œ(by.binding('ctrl.formData.emailAddress'));
๊ธฐ๋Œ€(์ธ์‚ฌ๋ง.getText()).toEqual('[email protected]');
});
});

url์ด ๋ณ€๊ฒฝ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€์‹  emailAddress ์š”์†Œ๋„ ๋‚˜ํƒ€๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์‹ญ์‹œ์˜ค. ๋˜ํ•œ browser.driver.wait ๋ฐ browser.driver.getCurrentUrl์„ ์‚ฌ์šฉํ•ด ๋ณด์‹ญ์‹œ์˜ค. get()...{} ๋ธ”๋ก ๋‚ด์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋„ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

@srajagopalan1712 ํ”ผ๋“œ๋ฐฑ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์—ฌ์ „ํžˆ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ์˜ˆ์ œ๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹œ๋ฉด ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ ์ฝ”๋“œ์— return /thetestroom/.test(url); ๊ฐ€ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ์ด์ „ ์‘๋‹ต์—์„œ URL์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์ค€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ 'testroom'์„ URL์ด ์–ด๋–ป๊ฒŒ ๋ณด์ด๋“  ๋ณ€๊ฒฝํ•˜์„ธ์š”. ๊ฐ๋„ ๋ฌธ์ œ ๋Œ€์‹  ์—ฌ๊ธฐ์—์„œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์–ป์—ˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 homepage.myButton.click().then(function() {
     browser.driver.wait(function() {
        return browser.driver.getCurrentUrl().then(function(url) {
          return url.includes('......'); // checks if the new url has what you are looking for in ...    
     }); // this waits until the url changes to whatever it should be in ....
    }, 25000, "URL hasn't changed").then(function() {
   // after url changed, in new page check these 
   // pec is protractor expected condition.
    // See http://www.protractortest.org/#/api?view=ProtractorExpectedConditions
     browser.wait(pec.visibilityOf(homepage.feedTitle), 20000); 
     expect(homepage.feedTitle.getText()).toContain('.....');
      expect(homepage.feedBody.getText()).toContain('.....');  
  });

@ ์‚ฌ๋ผ๋‹ค,

์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ Œ๋“œ๋ผ...!

2016๋…„ 10์›” 7์ผ 15์‹œ 52๋ถ„์— Saradha [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด return /testroom/.test(url); ์ฝ”๋“œ์—์„œ
์œ„์—. ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ URL์— ๋Œ€ํ•ด ์ค€ ์˜ˆ์ž…๋‹ˆ๋‹ค.
์˜ค๋ž˜๋œ ์‘๋‹ต. ์—ฌ๊ธฐ์—์„œ 'testroom'์„ URL๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.
์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ์•ต๊ทค๋Ÿฌ ๋Œ€์‹  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์–ป์—ˆ์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ™ˆํŽ˜์ด์ง€.myButton.click().then(ํ•จ์ˆ˜() {
๋ธŒ๋ผ์šฐ์ €.๋“œ๋ผ์ด๋ฒ„.๋Œ€๊ธฐ(ํ•จ์ˆ˜() {
๋ฐ˜ํ™˜ browser.driver.getCurrentUrl().then(function(url) {
๋ฐ˜ํ™˜ url.includes('......'); // ์ƒˆ URL์— ์ฐพ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค...
}); // ์ด๊ฒƒ์€ URL์ด ๊ทธ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค ....
}, 25000, "URL์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.").then(function() {
// URL์ด ๋ณ€๊ฒฝ๋œ ํ›„ ์ƒˆ ํŽ˜์ด์ง€์—์„œ ๋‹ค์Œ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
// pec์€ ๊ฐ๋„๊ธฐ ์˜ˆ์ƒ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.
// http://www.protractortest.org/#/api ?view=ProtractorExpectedConditions ์ฐธ์กฐ
browser.wait(pec.visibilityOf(homepage.feedTitle), 20000);
๊ธฐ๋Œ€(ํ™ˆํŽ˜์ด์ง€.feedTitle.getText()).toContain('.....');
๊ธฐ๋Œ€(ํ™ˆํŽ˜์ด์ง€.feedBody.getText()).toContain('.....');
});

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/angular/protractor/issues/1760#issuecomment -252345767,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AViSFrR5k79AQWfZVEm6J1qTSEPvMjfnks5qxqMXgaJpZM4DYTza
.

@์‚ฌ๋ผ๋‹ค ,

ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์กฐ์–ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ์ค‘ : npm ์‹คํ–‰ ๊ฐœ๋ฐœ

์˜ค๋ฅ˜: './internal/streams/BufferList' ๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋ Œ๋“œ๋ผ...!

2016๋…„ 10์›” 17์ผ 16:48, narendra Reddy narendra. [email protected] ์€ ๋‹ค์Œ

@ ์‚ฌ๋ผ๋‹ค,

์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ Œ๋“œ๋ผ...!

2016๋…„ 10์›” 7์ผ 15์‹œ 52๋ถ„์— Saradha [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด return /testroom/.test(url); ์ฝ”๋“œ์—์„œ
์œ„์—. ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ URL์— ๋Œ€ํ•ด ์ค€ ์˜ˆ์ž…๋‹ˆ๋‹ค.
์˜ค๋ž˜๋œ ์‘๋‹ต. ์—ฌ๊ธฐ์—์„œ 'testroom'์„ URL๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.
์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ์•ต๊ทค๋Ÿฌ ๋Œ€์‹  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์–ป์—ˆ์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ™ˆํŽ˜์ด์ง€.myButton.click().then(ํ•จ์ˆ˜() {
๋ธŒ๋ผ์šฐ์ €.๋“œ๋ผ์ด๋ฒ„.๋Œ€๊ธฐ(ํ•จ์ˆ˜() {
๋ฐ˜ํ™˜ browser.driver.getCurrentUrl().then(function(url) {
๋ฐ˜ํ™˜ url.includes('......'); // ์ƒˆ URL์— ์ฐพ๊ณ  ์žˆ๋Š” ๋‚ด์šฉ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค...
}); // ์ด๊ฒƒ์€ URL์ด ๊ทธ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค ....
}, 25000, "URL์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.").then(function() {
// URL์ด ๋ณ€๊ฒฝ๋œ ํ›„ ์ƒˆ ํŽ˜์ด์ง€์—์„œ ๋‹ค์Œ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
// pec์€ ๊ฐ๋„๊ธฐ ์˜ˆ์ƒ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.
// http://www.protractortest.org/#/api ?view=ProtractorExpectedConditions ์ฐธ์กฐ
browser.wait(pec.visibilityOf(homepage.feedTitle), 20000);
๊ธฐ๋Œ€(ํ™ˆํŽ˜์ด์ง€.feedTitle.getText()).toContain('.....');
๊ธฐ๋Œ€(ํ™ˆํŽ˜์ด์ง€.feedBody.getText()).toContain('.....');
});

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/angular/protractor/issues/1760#issuecomment -252345767,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AViSFrR5k79AQWfZVEm6J1qTSEPvMjfnks5qxqMXgaJpZM4DYTza
.

์ฝ”๋“œ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๊ฒƒ. ๊ฐ๋„/๊ฐ๋„ ์˜ค๋ฅ˜์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Œ
๋‚˜๋Š” ์•Œ๊ณ ์žˆ๋‹ค.

๋‚ด iPhone์—์„œ ๋ณด๋‚ธ

2016๋…„ 10์›” 19์ผ ์˜คํ›„ 7์‹œ 54๋ถ„์— narendra [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

@์‚ฌ๋ผ๋‹ค ,

ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์กฐ์–ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ์ค‘ : npm ์‹คํ–‰ ๊ฐœ๋ฐœ

์˜ค๋ฅ˜: './internal/streams/BufferList' ๋ชจ๋“ˆ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚˜๋ Œ๋“œ๋ผ...!

2016๋…„ 10์›” 17์ผ 16:48, narendra Reddy narendra. [email protected] ์€ ๋‹ค์Œ

@ ์‚ฌ๋ผ๋‹ค,

์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋ Œ๋“œ๋ผ...!

2016๋…„ 10์›” 7์ผ 15์‹œ 52๋ถ„์— Saradha [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด return /testroom/.test(url); ์ฝ”๋“œ์—์„œ
์œ„์—. ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ URL์— ๋Œ€ํ•ด ์ค€ ์˜ˆ์ž…๋‹ˆ๋‹ค.
์˜ค๋ž˜๋œ ์‘๋‹ต. ์—ฌ๊ธฐ์—์„œ 'testroom'์„ URL๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”.
~ ํ•  ๊ฒƒ์ด๋‹ค
์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. ์•ต๊ทค๋Ÿฌ ๋Œ€์‹  ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์–ป์—ˆ์–ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ฌธ์ œ.
์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ™ˆํŽ˜์ด์ง€.myButton.click().then(ํ•จ์ˆ˜() {
๋ธŒ๋ผ์šฐ์ €.๋“œ๋ผ์ด๋ฒ„.๋Œ€๊ธฐ(ํ•จ์ˆ˜() {
๋ฐ˜ํ™˜ browser.driver.getCurrentUrl().then(function(url) {
๋ฐ˜ํ™˜ url.includes('......'); // ์ƒˆ URL์— ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
์—์„œ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค ...
}); // ์ด๊ฒƒ์€ URL์ด ๊ทธ๊ฒƒ์ด ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€๊ฒฝ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค ....
}, 25000, "URL์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.").then(function() {
// URL์ด ๋ณ€๊ฒฝ๋œ ํ›„ ์ƒˆ ํŽ˜์ด์ง€์—์„œ ๋‹ค์Œ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
// pec์€ ๊ฐ๋„๊ธฐ ์˜ˆ์ƒ ์กฐ๊ฑด์ž…๋‹ˆ๋‹ค.
// ๋ณด๋‹ค
http://www.protractortest.org/#/api ?view=๊ฐ๋„๊ธฐ ์˜ˆ์ƒ ์กฐ๊ฑด
browser.wait(pec.visibilityOf(homepage.feedTitle), 20000);
๊ธฐ๋Œ€(ํ™ˆํŽ˜์ด์ง€.feedTitle.getText()).toContain('.....');
๊ธฐ๋Œ€(ํ™ˆํŽ˜์ด์ง€.feedBody.getText()).toContain('.....');
});

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
< https://github.com/angular/protractor/issues/1760#issuecomment -252345767
,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
<
https://github.com/notifications/unsubscribe-auth/AViSFrR5k79AQWfZVEm6J1qTSEPvMjfnks5qxqMXgaJpZM4DYTza

.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/angular/protractor/issues/1760#issuecomment -254996166,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AKCDZXWuZX7dJ0R2V2sHgxKqwydQV8o3ks5q1tfngaJpZM4DYTza
.

์•ˆ๋…•ํ•˜์„ธ์š” srajagopalan1712๋‹˜,

๊ฐ๋„๊ธฐ๊ฐ€ ์˜ค๋ฅ˜ ์•„๋ž˜์— ํ‘œ์‹œ๋˜๋Š” ์˜ˆ๋ฅผ ์‹คํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ์กฐ์–ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์˜ค๋ฅ˜:

goog.global.setTimeout(function() { ์˜ˆ์™ธ ๋ฐœ์ƒ; }, 0);
^^
๊ฐ๋„๊ธฐ๊ฐ€ ํŽ˜์ด์ง€์™€ ๋™๊ธฐํ™”๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜: "[ng:test] http://errors.angularjs.org/1.4.7/ng/test "

์—ฌ๊ธฐ ๋‚ด ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค

describe('๋‚ด ์•ฑ ํ…Œ์ŠคํŠธ', function() {

      browser.get('http://localhost:port/integrated/myWeb.html').then(function() {


    browser.wait(function() {
        return browser.getCurrentUrl().then(function(url) {
            return 'http://localhost:port/integrated/myWeb.html';

            element(by.model('ctrl.formData.emailAddress')).sendKeys('').clear();
            element(by.model('ctrl.formData.emailAddress')).sendKeys('[email protected]');
            element(by.model('ctrl.formData.emailAddress')).getAttribute('value').then(function (value) {
                expect(value).toEqual('[email protected]');
            });

        });
    }, 10000);
});

๋‹ค๋“ค ๊ฐ์‚ฌ ํ•ด์š”,

html ํŽ˜์ด์ง€์— ng-app ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

Angular 5 ํ…Œ์ŠคํŠธ์—์„œ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๋ช…๋ฐฑํ•œ ๊ฒƒ์„ ๋งํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋””๋ฒ„๊ทธํ•˜๋ ค๋ฉด e2e ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— "ng serve"๋ฅผ ๋ณ„๋„๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋‚ด๊ฐ€ ๋‹ต์„ ์ฐพ์€ ํ† ๋ก ์ž…๋‹ˆ๋‹ค.
https://github.com/angular/angular-cli/issues/4183

์ด๊ฒƒ์ด ๋ˆ„๊ตฐ๊ฐ€๋ฅผ ๋•๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰