npm install -g protractor
webdriver-manager update & webdriver-manager start
// It is a good idea to use page objects to modularize your testing logicvar angularHomepage = { nameInput : element(by.model('yourName')), greeting : element(by.binding('yourName')), get : function() { browser.get('index.html'); }, setName : function(name) { this.nameInput.sendKeys(name); }};// Here we are using the Jasmine test framework // See http://jasmine.github.io/2.0/introduction.html for more detailsdescribe('angularjs homepage', function() { it('should greet the named user', function(){ angularHomepage.get(); angularHomepage.setName('Julie'); expect(angularHomepage.greeting.getText()). toEqual('Hello Julie!'); });});
exports.config = { seleniumAddress: 'http://localhost:4444/wd/hub', specs: ['testFolder/*'], multiCapabilities: [{ 'browserName': 'chrome', // browser-specific tests specs: 'chromeTests/*' }, { 'browserName': 'firefox', // run tests in parallel shardTestFiles: true }], baseUrl: 'http://www.angularjs.org',};
protractor conf.js
1 test, 1 assertions, 0 failures
@Test public void isUserLockedOut_invalidLogin() { authenticator.authenticate(username, invalidPassword); assertFalse(authenticator.isUserLockedOut(username)); authenticator.authenticate(username, invalidPassword); assertFalse(authenticator.isUserLockedOut(username)); authenticator.authenticate(username, invalidPassword); assertTrue(authenticator.isUserLockedOut(username));}
bool WaitForCallToComeUp(content::WebContents* tab_contents) { // Apprtc will set remoteVideo.style.opacity to 1 when the call comes up. std::string javascript = "window.domAutomationController.send(remoteVideo.style.opacity)"; return test::PollingWaitUntil(javascript, "1", tab_contents);}
bool DetectRemoteVideoPlaying(content::WebContents* tab_contents) { if (!EvalInJavascriptFile(tab_contents, GetSourceDir().Append( FILE_PATH_LITERAL( "chrome/test/data/webrtc/test_functions.js")))) return false; if (!EvalInJavascriptFile(tab_contents, GetSourceDir().Append( FILE_PATH_LITERAL( "chrome/test/data/webrtc/video_detector.js")))) return false; // The remote video tag is called remoteVideo in the AppRTC code. StartDetectingVideo(tab_contents, "remoteVideo"); WaitForVideoToPlay(tab_contents); return true;}
if (!HasWebcamOnSystem()) return;
google_appengine/dev_appserver.py apprtc_code/
bool LaunchApprtcInstanceOnLocalhost() // ... Figure out locations of SDK and apprtc code ... CommandLine command_line(CommandLine::NO_PROGRAM); EXPECT_TRUE(GetPythonCommand(&command_line)); command_line.AppendArgPath(appengine_dev_appserver); command_line.AppendArgPath(apprtc_dir); command_line.AppendArg("--port=9999"); command_line.AppendArg("--admin_port=9998"); command_line.AppendArg("--skip_sdk_update_check"); VLOG(1) << "Running " << command_line.GetCommandLineString(); return base::LaunchProcess(command_line, base::LaunchOptions(), &dev_appserver_);}
bool LocalApprtcInstanceIsUp() { // Load the admin page and see if we manage to load it right. ui_test_utils::NavigateToURL(browser(), GURL("localhost:9998")); content::WebContents* tab_contents = browser()->tab_strip_model()->GetActiveWebContents(); std::string javascript = "window.domAutomationController.send(document.title)"; std::string result; if (!content::ExecuteScriptAndExtractString(tab_contents, javascript, &result)) return false; return result == kTitlePageOfAppEngineAdminPage;}
while (!LocalApprtcInstanceIsUp()) VLOG(1) << "Waiting for AppRTC to come up...";
from mozprofile import profilefrom mozrunner import runnerWEBRTC_PREFERENCES = { 'media.navigator.permission.disabled': True,}def main(): # Set up flags, handle SIGTERM, etc # ... firefox_profile = profile.FirefoxProfile(preferences=WEBRTC_PREFERENCES) firefox_runner = runner.FirefoxRunner( profile=firefox_profile, binary=options.binary, cmdargs=[options.webpage]) firefox_runner.start()
GURL room_url = GURL(base::StringPrintf("http://localhost:9999?r=room_%d", base::RandInt(0, 65536)));content::WebContents* chrome_tab = OpenPageAndAcceptUserMedia(room_url);ASSERT_TRUE(LaunchFirefoxWithUrl(room_url));
run_firefox_webrtc.py --binary /path/to/firefox --webpage http://localhost::9999?r=my_room