Commit ac7c97b8 authored by Ian Struiksma's avatar Ian Struiksma Committed by Commit Bot

Clean up duplicate code in captured_sites_test_utils

As list of actions available grows the same code is replicated for
each action execution method. This CL adds a couple helper methods:
ExtractFrameAndVerifyElement
SimulateKeyPressWrapper
To encapsulate some logic in one place.

Add CloseTab and PressSpace actions to captured sites framework

Fixed multiple tests by adding additional methods and reviewing the
stored site recipe files.

Bug: 984664
Change-Id: I5ceb03e92e76e4dfaeff77e9b456961331e04b68
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1828230
Commit-Queue: Ian Struiksma <ianstruiksma@google.com>
Auto-Submit: Ian Struiksma <ianstruiksma@google.com>
Reviewed-by: default avatarDominic Battré <battre@chromium.org>
Cr-Commit-Position: refs/heads/master@{#701695}
parent 52e4345e
...@@ -452,7 +452,7 @@ deps = { ...@@ -452,7 +452,7 @@ deps = {
'packages': [ 'packages': [
{ {
'package': 'chromium/chrome/test/data/password/captured_sites', 'package': 'chromium/chrome/test/data/password/captured_sites',
'version': 'XxyN4JjdvL2TBSIFThfP0pJhd0-4COvFTOMCt356ht0C', 'version': 'q_mI3rtAXvNUW_X3zxca3VcUVdHkgwRqhfTLHt9H7rIC',
} }
], ],
'condition': 'checkout_chromium_password_manager_test_dependencies', 'condition': 'checkout_chromium_password_manager_test_dependencies',
......
...@@ -668,6 +668,9 @@ bool TestRecipeReplayer::ReplayRecordedActions( ...@@ -668,6 +668,9 @@ bool TestRecipeReplayer::ReplayRecordedActions(
} else if (base::CompareCaseInsensitiveASCII(*type, "click") == 0) { } else if (base::CompareCaseInsensitiveASCII(*type, "click") == 0) {
if (!ExecuteClickAction(*action)) if (!ExecuteClickAction(*action))
return false; return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "closeTab") == 0) {
if (!ExecuteCloseTabAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "coolOff") == 0) { } else if (base::CompareCaseInsensitiveASCII(*type, "coolOff") == 0) {
if (!ExecuteCoolOffAction(*action)) if (!ExecuteCoolOffAction(*action))
return false; return false;
...@@ -686,6 +689,9 @@ bool TestRecipeReplayer::ReplayRecordedActions( ...@@ -686,6 +689,9 @@ bool TestRecipeReplayer::ReplayRecordedActions(
} else if (base::CompareCaseInsensitiveASCII(*type, "pressEscape") == 0) { } else if (base::CompareCaseInsensitiveASCII(*type, "pressEscape") == 0) {
if (!ExecutePressEscapeAction(*action)) if (!ExecutePressEscapeAction(*action))
return false; return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "pressSpace") == 0) {
if (!ExecutePressSpaceAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "savePassword") == 0) { } else if (base::CompareCaseInsensitiveASCII(*type, "savePassword") == 0) {
if (!ExecuteSavePasswordAction(*action)) if (!ExecuteSavePasswordAction(*action))
return false; return false;
...@@ -698,8 +704,8 @@ bool TestRecipeReplayer::ReplayRecordedActions( ...@@ -698,8 +704,8 @@ bool TestRecipeReplayer::ReplayRecordedActions(
} else if (base::CompareCaseInsensitiveASCII(*type, "typePassword") == 0) { } else if (base::CompareCaseInsensitiveASCII(*type, "typePassword") == 0) {
if (!ExecuteTypePasswordAction(*action)) if (!ExecuteTypePasswordAction(*action))
return false; return false;
} else if (base::CompareCaseInsensitiveASCII( } else if (base::CompareCaseInsensitiveASCII(*type, "updatePassword") ==
*type, "updatePassword") == 0) { 0) {
if (!ExecuteUpdatePasswordAction(*action)) if (!ExecuteUpdatePasswordAction(*action))
return false; return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "validateField") == 0) { } else if (base::CompareCaseInsensitiveASCII(*type, "validateField") == 0) {
...@@ -773,25 +779,14 @@ bool TestRecipeReplayer::InitializeBrowserToExecuteRecipe( ...@@ -773,25 +779,14 @@ bool TestRecipeReplayer::InitializeBrowserToExecuteRecipe(
bool TestRecipeReplayer::ExecuteAutofillAction( bool TestRecipeReplayer::ExecuteAutofillAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false; return false;
std::vector<std::string> frame_path; std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path)) if (!GetIFramePathFromAction(action, &frame_path))
return false; return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false;
VLOG(1) << "Invoking Chrome Autofill on `" << xpath << "`."; VLOG(1) << "Invoking Chrome Autofill on `" << xpath << "`.";
PageActivityObserver page_activity_observer(frame); PageActivityObserver page_activity_observer(frame);
// Clear the input box first, in case a previous value is there. // Clear the input box first, in case a previous value is there.
...@@ -818,23 +813,8 @@ bool TestRecipeReplayer::ExecuteAutofillAction( ...@@ -818,23 +813,8 @@ bool TestRecipeReplayer::ExecuteAutofillAction(
bool TestRecipeReplayer::ExecuteClickAction( bool TestRecipeReplayer::ExecuteClickAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false; return false;
VLOG(1) << "Left mouse clicking `" << xpath << "`."; VLOG(1) << "Left mouse clicking `" << xpath << "`.";
...@@ -852,6 +832,13 @@ bool TestRecipeReplayer::ExecuteClickAction( ...@@ -852,6 +832,13 @@ bool TestRecipeReplayer::ExecuteClickAction(
return true; return true;
} }
bool TestRecipeReplayer::ExecuteCloseTabAction(
const base::DictionaryValue& action) {
VLOG(1) << "Closing Active Tab";
browser_->tab_strip_model()->CloseSelectedTabs();
return true;
}
bool TestRecipeReplayer::ExecuteCoolOffAction( bool TestRecipeReplayer::ExecuteCoolOffAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
base::RunLoop heart_beat; base::RunLoop heart_beat;
...@@ -877,19 +864,8 @@ bool TestRecipeReplayer::ExecuteCoolOffAction( ...@@ -877,19 +864,8 @@ bool TestRecipeReplayer::ExecuteCoolOffAction(
bool TestRecipeReplayer::ExecuteHoverAction( bool TestRecipeReplayer::ExecuteHoverAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false; return false;
VLOG(1) << "Hovering over `" << xpath << "`."; VLOG(1) << "Hovering over `" << xpath << "`.";
...@@ -934,48 +910,38 @@ bool TestRecipeReplayer::ExecuteForceLoadPage( ...@@ -934,48 +910,38 @@ bool TestRecipeReplayer::ExecuteForceLoadPage(
bool TestRecipeReplayer::ExecutePressEnterAction( bool TestRecipeReplayer::ExecutePressEnterAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false; return false;
VLOG(1) << "Pressing 'Enter' on `" << xpath << "`."; VLOG(1) << "Pressing 'Enter' on `" << xpath << "`.";
PageActivityObserver page_activity_observer(frame); PageActivityObserver page_activity_observer(frame);
if (!PlaceFocusOnElement(xpath, frame_path, frame)) SimulateKeyPressWrapper(content::WebContents::FromRenderFrameHost(frame),
return false; ui::DomKey::ENTER);
ui::DomKey key = ui::DomKey::ENTER;
ui::KeyboardCode key_code = ui::NonPrintableDomKeyToKeyboardCode(key);
ui::DomCode code = ui::UsLayoutKeyboardCodeToDomCode(key_code);
SimulateKeyPress(content::WebContents::FromRenderFrameHost(frame), key, code,
key_code, false, false, false, false);
page_activity_observer.WaitTillPageIsIdle(); page_activity_observer.WaitTillPageIsIdle();
return true; return true;
} }
bool TestRecipeReplayer::ExecutePressEscapeAction( bool TestRecipeReplayer::ExecutePressEscapeAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
ui::DomKey key = ui::DomKey::ESCAPE;
ui::KeyboardCode key_code = ui::NonPrintableDomKeyToKeyboardCode(key);
ui::DomCode code = ui::UsLayoutKeyboardCodeToDomCode(key_code);
SimulateKeyPress(GetWebContents(), key, code, key_code, false, false, false,
false);
VLOG(1) << "Pressing 'Esc' in the current frame"; VLOG(1) << "Pressing 'Esc' in the current frame";
PageActivityObserver page_activity_observer(GetWebContents()); PageActivityObserver page_activity_observer(GetWebContents());
SimulateKeyPressWrapper(GetWebContents(), ui::DomKey::ESCAPE);
page_activity_observer.WaitTillPageIsIdle();
return true;
}
bool TestRecipeReplayer::ExecutePressSpaceAction(
const base::DictionaryValue& action) {
std::string xpath;
content::RenderFrameHost* frame;
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame, true))
return false;
PageActivityObserver page_activity_observer(frame);
VLOG(1) << "Pressing 'Space' on `" << xpath << "`.";
SimulateKeyPressWrapper(content::WebContents::FromRenderFrameHost(frame),
ui::DomKey::FromCharacter(' '));
page_activity_observer.WaitTillPageIsIdle(); page_activity_observer.WaitTillPageIsIdle();
return true; return true;
} }
...@@ -1049,19 +1015,8 @@ bool TestRecipeReplayer::ExecuteSelectDropdownAction( ...@@ -1049,19 +1015,8 @@ bool TestRecipeReplayer::ExecuteSelectDropdownAction(
} }
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false; return false;
VLOG(1) << "Select option '" << index.value() << "' from `" << xpath << "`."; VLOG(1) << "Select option '" << index.value() << "' from `" << xpath << "`.";
...@@ -1088,22 +1043,11 @@ bool TestRecipeReplayer::ExecuteTypeAction( ...@@ -1088,22 +1043,11 @@ bool TestRecipeReplayer::ExecuteTypeAction(
return false; return false;
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false; return false;
VLOG(1) << "Typing '" << value << "' inside `" << xpath << "`."; VLOG(1) << "Typing '" << *value << "' inside `" << xpath << "`.";
PageActivityObserver page_activity_observer(frame); PageActivityObserver page_activity_observer(frame);
if (!ExecuteJavaScriptOnElementByXpath( if (!ExecuteJavaScriptOnElementByXpath(
frame, xpath, frame, xpath,
...@@ -1121,23 +1065,8 @@ bool TestRecipeReplayer::ExecuteTypeAction( ...@@ -1121,23 +1065,8 @@ bool TestRecipeReplayer::ExecuteTypeAction(
bool TestRecipeReplayer::ExecuteTypePasswordAction( bool TestRecipeReplayer::ExecuteTypePasswordAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame, true))
return false;
std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false; return false;
const std::string* value = const std::string* value =
...@@ -1153,17 +1082,13 @@ bool TestRecipeReplayer::ExecuteTypePasswordAction( ...@@ -1153,17 +1082,13 @@ bool TestRecipeReplayer::ExecuteTypePasswordAction(
return false; return false;
} }
if (!PlaceFocusOnElement(xpath, frame_path, frame)) VLOG(1) << "Typing '" << *value << "' inside `" << xpath << "`.";
return false; content::WebContents* web_contents =
content::WebContents::FromRenderFrameHost(frame);
VLOG(1) << "Typing '" << value << "' inside `" << xpath << "`."; PageActivityObserver page_activity_observer(web_contents);
PageActivityObserver page_activity_observer(frame);
for (size_t index = 0; index < value->size(); index++) { for (size_t index = 0; index < value->size(); index++) {
ui::DomKey key = ui::DomKey::FromCharacter(value->at(index)); SimulateKeyPressWrapper(web_contents,
ui::KeyboardCode key_code = ui::NonPrintableDomKeyToKeyboardCode(key); ui::DomKey::FromCharacter(value->at(index)));
ui::DomCode code = ui::UsLayoutKeyboardCodeToDomCode(key_code);
SimulateKeyPress(content::WebContents::FromRenderFrameHost(frame), key,
code, key_code, false, false, false, false);
} }
page_activity_observer.WaitTillPageIsIdle(); page_activity_observer.WaitTillPageIsIdle();
return true; return true;
...@@ -1191,26 +1116,8 @@ bool TestRecipeReplayer::ExecuteUpdatePasswordAction( ...@@ -1191,26 +1116,8 @@ bool TestRecipeReplayer::ExecuteUpdatePasswordAction(
bool TestRecipeReplayer::ExecuteValidateFieldValueAction( bool TestRecipeReplayer::ExecuteValidateFieldValueAction(
const base::DictionaryValue& action) { const base::DictionaryValue& action) {
std::string xpath; std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame; content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame)) if (!ExtractFrameAndVerifyElement(action, &xpath, &frame, false, true))
return false;
// If we're just validating we don't care about on_top-ness, as copied from
// chrome/test/data/web_page_replay_go_helper_scripts/automation_helper.js
// to TestRecipeReplayer::DomElementReadyState enum
// So remove (DomElementReadyState::kReadyStateOnTop)
if (visibility_enum_val & kReadyStateOnTop)
visibility_enum_val -= kReadyStateOnTop;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
return false; return false;
const base::Value* autofill_prediction_container = const base::Value* autofill_prediction_container =
...@@ -1398,6 +1305,44 @@ bool TestRecipeReplayer::GetTargetFrameFromAction( ...@@ -1398,6 +1305,44 @@ bool TestRecipeReplayer::GetTargetFrameFromAction(
return true; return true;
} }
bool TestRecipeReplayer::ExtractFrameAndVerifyElement(
const base::DictionaryValue& action,
std::string* xpath,
content::RenderFrameHost** frame,
bool set_focus,
bool relaxed_visibility) {
if (!GetTargetHTMLElementXpathFromAction(action, xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
if (!GetTargetFrameFromAction(action, frame))
return false;
// If we're just validating we don't care about on_top-ness, as copied from
// chrome/test/data/web_page_replay_go_helper_scripts/automation_helper.js
// to TestRecipeReplayer::DomElementReadyState enum
// So remove (DomElementReadyState::kReadyStateOnTop)
if (relaxed_visibility)
visibility_enum_val &= ~kReadyStateOnTop;
if (!WaitForElementToBeReady(*xpath, visibility_enum_val, *frame))
return false;
if (set_focus) {
std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path))
return false;
if (!PlaceFocusOnElement(*xpath, frame_path, *frame))
return false;
}
return true;
}
bool TestRecipeReplayer::GetIFramePathFromAction( bool TestRecipeReplayer::GetIFramePathFromAction(
const base::DictionaryValue& action, const base::DictionaryValue& action,
std::vector<std::string>* iframe_path) { std::vector<std::string>* iframe_path) {
...@@ -1783,6 +1728,15 @@ bool TestRecipeReplayer::SimulateMouseHoverAt( ...@@ -1783,6 +1728,15 @@ bool TestRecipeReplayer::SimulateMouseHoverAt(
return true; return true;
} }
void TestRecipeReplayer::SimulateKeyPressWrapper(
content::WebContents* web_contents,
ui::DomKey key) {
ui::KeyboardCode key_code = ui::NonPrintableDomKeyToKeyboardCode(key);
ui::DomCode code = ui::UsLayoutKeyboardCodeToDomCode(key_code);
SimulateKeyPress(web_contents, key, code, key_code, false, false, false,
false);
}
void TestRecipeReplayer::NavigateAwayAndDismissBeforeUnloadDialog() { void TestRecipeReplayer::NavigateAwayAndDismissBeforeUnloadDialog() {
content::PrepContentsForBeforeUnloadTest(GetWebContents()); content::PrepContentsForBeforeUnloadTest(GetWebContents());
ui_test_utils::NavigateToURLWithDisposition( ui_test_utils::NavigateToURLWithDisposition(
......
...@@ -298,10 +298,12 @@ class TestRecipeReplayer { ...@@ -298,10 +298,12 @@ class TestRecipeReplayer {
bool ExecuteAutofillAction(const base::DictionaryValue& action); bool ExecuteAutofillAction(const base::DictionaryValue& action);
bool ExecuteClickAction(const base::DictionaryValue& action); bool ExecuteClickAction(const base::DictionaryValue& action);
bool ExecuteCoolOffAction(const base::DictionaryValue& action); bool ExecuteCoolOffAction(const base::DictionaryValue& action);
bool ExecuteCloseTabAction(const base::DictionaryValue& action);
bool ExecuteHoverAction(const base::DictionaryValue& action); bool ExecuteHoverAction(const base::DictionaryValue& action);
bool ExecuteForceLoadPage(const base::DictionaryValue& action); bool ExecuteForceLoadPage(const base::DictionaryValue& action);
bool ExecutePressEnterAction(const base::DictionaryValue& action); bool ExecutePressEnterAction(const base::DictionaryValue& action);
bool ExecutePressEscapeAction(const base::DictionaryValue& action); bool ExecutePressEscapeAction(const base::DictionaryValue& action);
bool ExecutePressSpaceAction(const base::DictionaryValue& action);
bool ExecuteRunCommandAction(const base::DictionaryValue& action); bool ExecuteRunCommandAction(const base::DictionaryValue& action);
bool ExecuteSavePasswordAction(const base::DictionaryValue& action); bool ExecuteSavePasswordAction(const base::DictionaryValue& action);
bool ExecuteSelectDropdownAction(const base::DictionaryValue& action); bool ExecuteSelectDropdownAction(const base::DictionaryValue& action);
...@@ -322,6 +324,11 @@ class TestRecipeReplayer { ...@@ -322,6 +324,11 @@ class TestRecipeReplayer {
bool GetTargetHTMLElementVisibilityEnumFromAction( bool GetTargetHTMLElementVisibilityEnumFromAction(
const base::DictionaryValue& action, const base::DictionaryValue& action,
int* visibility_enum_val); int* visibility_enum_val);
bool ExtractFrameAndVerifyElement(const base::DictionaryValue& action,
std::string* xpath,
content::RenderFrameHost** frame,
bool set_focus = false,
bool relaxed_visibility = false);
bool WaitForElementToBeReady(const std::string& xpath, bool WaitForElementToBeReady(const std::string& xpath,
const int visibility_enum_val, const int visibility_enum_val,
content::RenderFrameHost* frame); content::RenderFrameHost* frame);
...@@ -347,6 +354,8 @@ class TestRecipeReplayer { ...@@ -347,6 +354,8 @@ class TestRecipeReplayer {
const std::string& expected_value, const std::string& expected_value,
const std::string& validation_field, const std::string& validation_field,
const bool ignoreCase = false); const bool ignoreCase = false);
void SimulateKeyPressWrapper(content::WebContents* web_contents,
ui::DomKey key);
void NavigateAwayAndDismissBeforeUnloadDialog(); void NavigateAwayAndDismissBeforeUnloadDialog();
bool HasChromeStoredCredential(const base::DictionaryValue& action, bool HasChromeStoredCredential(const base::DictionaryValue& action,
bool* stored_cred); bool* stored_cred);
......
...@@ -2,18 +2,18 @@ ...@@ -2,18 +2,18 @@
"tests": [ "tests": [
{ "scenario_dir":"capture_update_pass", "site_name":"4shared" }, { "scenario_dir":"capture_update_pass", "site_name":"4shared" },
{ "scenario_dir":"capture_update_pass", "site_name":"allegro" }, { "scenario_dir":"capture_update_pass", "site_name":"allegro" },
{ "scenario_dir":"capture_update_pass", "site_name":"amazon", "disabled":true, "bug_number":984662 }, { "scenario_dir":"capture_update_pass", "site_name":"amazon" },
{ "scenario_dir":"capture_update_pass", "site_name":"autodesk" }, { "scenario_dir":"capture_update_pass", "site_name":"autodesk" },
{ "scenario_dir":"capture_update_pass", "site_name":"clever", "disabled":true, "bug_number":984662 }, { "scenario_dir":"capture_update_pass", "site_name":"clever" },
{ "scenario_dir":"capture_update_pass", "site_name":"github", "disabled":true, "bug_number":951847 }, { "scenario_dir":"capture_update_pass", "site_name":"github" },
{ "scenario_dir":"capture_update_pass", "site_name":"go_daddy" }, { "scenario_dir":"capture_update_pass", "site_name":"go_daddy" },
{ "scenario_dir":"capture_update_pass", "site_name":"grammarly" }, { "scenario_dir":"capture_update_pass", "site_name":"grammarly" },
{ "scenario_dir":"capture_update_pass", "site_name":"indeed" }, { "scenario_dir":"capture_update_pass", "site_name":"indeed" },
{ "scenario_dir":"capture_update_pass", "site_name":"librus" }, { "scenario_dir":"capture_update_pass", "site_name":"librus" },
{ "scenario_dir":"capture_update_pass", "site_name":"mit" }, { "scenario_dir":"capture_update_pass", "site_name":"mit" },
{ "scenario_dir":"capture_update_pass", "site_name":"naukri" }, { "scenario_dir":"capture_update_pass", "site_name":"naukri" },
{ "scenario_dir":"capture_update_pass", "site_name":"nexon", "disabled":true, "bug_number":1006335 }, { "scenario_dir":"capture_update_pass", "site_name":"nexon" },
{ "scenario_dir":"capture_update_pass", "site_name":"paypal", "disabled":true, "bug_number":951847 }, { "scenario_dir":"capture_update_pass", "site_name":"paypal" },
{ "scenario_dir":"capture_update_pass", "site_name":"rakuten" }, { "scenario_dir":"capture_update_pass", "site_name":"rakuten" },
{ "scenario_dir":"capture_update_pass", "site_name":"readtheory" }, { "scenario_dir":"capture_update_pass", "site_name":"readtheory" },
{ "scenario_dir":"capture_update_pass", "site_name":"roblox" }, { "scenario_dir":"capture_update_pass", "site_name":"roblox" },
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
{ "scenario_dir":"capture_update_pass", "site_name":"wargaming" }, { "scenario_dir":"capture_update_pass", "site_name":"wargaming" },
{ "scenario_dir":"capture_update_pass", "site_name":"yahoo" }, { "scenario_dir":"capture_update_pass", "site_name":"yahoo" },
{ "scenario_dir":"sign_in_pass", "site_name":"4shared" }, { "scenario_dir":"sign_in_pass", "site_name":"4shared" },
{ "scenario_dir":"sign_in_pass", "site_name":"airbnb", "disabled":true, "bug_number":951847 }, { "scenario_dir":"sign_in_pass", "site_name":"airbnb" },
{ "scenario_dir":"sign_in_pass", "site_name":"allegro" }, { "scenario_dir":"sign_in_pass", "site_name":"allegro" },
{ "scenario_dir":"sign_in_pass", "site_name":"amazon" }, { "scenario_dir":"sign_in_pass", "site_name":"amazon" },
{ "scenario_dir":"sign_in_pass", "site_name":"autodesk" }, { "scenario_dir":"sign_in_pass", "site_name":"autodesk" },
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
{ "scenario_dir":"sign_in_pass", "site_name":"freelancer" }, { "scenario_dir":"sign_in_pass", "site_name":"freelancer" },
{ "scenario_dir":"sign_in_pass", "site_name":"garena" }, { "scenario_dir":"sign_in_pass", "site_name":"garena" },
{ "scenario_dir":"sign_in_pass", "site_name":"gearbest" }, { "scenario_dir":"sign_in_pass", "site_name":"gearbest" },
{ "scenario_dir":"sign_in_pass", "site_name":"github", "disabled":true, "bug_number":951847 }, { "scenario_dir":"sign_in_pass", "site_name":"github" },
{ "scenario_dir":"sign_in_pass", "site_name":"go_daddy" }, { "scenario_dir":"sign_in_pass", "site_name":"go_daddy" },
{ "scenario_dir":"sign_in_pass", "site_name":"grammarly" }, { "scenario_dir":"sign_in_pass", "site_name":"grammarly" },
{ "scenario_dir":"sign_in_pass", "site_name":"groupon" }, { "scenario_dir":"sign_in_pass", "site_name":"groupon" },
...@@ -51,10 +51,10 @@ ...@@ -51,10 +51,10 @@
{ "scenario_dir":"sign_in_pass", "site_name":"nexon" }, { "scenario_dir":"sign_in_pass", "site_name":"nexon" },
{ "scenario_dir":"sign_in_pass", "site_name":"nitro_type" }, { "scenario_dir":"sign_in_pass", "site_name":"nitro_type" },
{ "scenario_dir":"sign_in_pass", "site_name":"ok_ru" }, { "scenario_dir":"sign_in_pass", "site_name":"ok_ru" },
{ "scenario_dir":"sign_in_pass", "site_name":"paypal", "disabled":true, "bug_number":951847 }, { "scenario_dir":"sign_in_pass", "site_name":"paypal" },
{ "scenario_dir":"sign_in_pass", "site_name":"pinterest" }, { "scenario_dir":"sign_in_pass", "site_name":"pinterest" },
{ "scenario_dir":"sign_in_pass", "site_name":"quia" }, { "scenario_dir":"sign_in_pass", "site_name":"quia" },
{ "scenario_dir":"sign_in_pass", "site_name":"quizlet", "locally":"FAIL" }, { "scenario_dir":"sign_in_pass", "site_name":"quizlet" },
{ "scenario_dir":"sign_in_pass", "site_name":"rakuten" }, { "scenario_dir":"sign_in_pass", "site_name":"rakuten" },
{ "scenario_dir":"sign_in_pass", "site_name":"readtheory" }, { "scenario_dir":"sign_in_pass", "site_name":"readtheory" },
{ "scenario_dir":"sign_in_pass", "site_name":"rediff" }, { "scenario_dir":"sign_in_pass", "site_name":"rediff" },
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
{ "scenario_dir":"sign_in_pass", "site_name":"wp_pl" }, { "scenario_dir":"sign_in_pass", "site_name":"wp_pl" },
{ "scenario_dir":"sign_in_pass", "site_name":"yahoo" }, { "scenario_dir":"sign_in_pass", "site_name":"yahoo" },
{ "scenario_dir":"sign_in_pass", "site_name":"zoho" }, { "scenario_dir":"sign_in_pass", "site_name":"zoho" },
{ "scenario_dir":"sign_up_fill", "site_name":"4shared", "disabled":true, "bug_number":984662, "locally":"PASS" }, { "scenario_dir":"sign_up_fill", "site_name":"4shared" },
{ "scenario_dir":"sign_up_fill", "site_name":"aliexpress" }, { "scenario_dir":"sign_up_fill", "site_name":"aliexpress" },
{ "scenario_dir":"sign_up_fill", "site_name":"allegro" }, { "scenario_dir":"sign_up_fill", "site_name":"allegro" },
{ "scenario_dir":"sign_up_fill", "site_name":"amazon" }, { "scenario_dir":"sign_up_fill", "site_name":"amazon" },
...@@ -79,14 +79,14 @@ ...@@ -79,14 +79,14 @@
{ "scenario_dir":"sign_up_fill", "site_name":"bet_365" }, { "scenario_dir":"sign_up_fill", "site_name":"bet_365" },
{ "scenario_dir":"sign_up_fill", "site_name":"clever" }, { "scenario_dir":"sign_up_fill", "site_name":"clever" },
{ "scenario_dir":"sign_up_fill", "site_name":"daum" }, { "scenario_dir":"sign_up_fill", "site_name":"daum" },
{ "scenario_dir":"sign_up_fill", "site_name":"discord_app", "disabled":true, "bug_number":951847 }, { "scenario_dir":"sign_up_fill", "site_name":"discord_app" },
{ "scenario_dir":"sign_up_fill", "site_name":"dreambox", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_fill", "site_name":"dreambox" },
{ "scenario_dir":"sign_up_fill", "site_name":"ea" }, { "scenario_dir":"sign_up_fill", "site_name":"ea" },
{ "scenario_dir":"sign_up_fill", "site_name":"ebay" }, { "scenario_dir":"sign_up_fill", "site_name":"ebay" },
{ "scenario_dir":"sign_up_fill", "site_name":"edmodo" }, { "scenario_dir":"sign_up_fill", "site_name":"edmodo" },
{ "scenario_dir":"sign_up_fill", "site_name":"elvenar", "disabled":true, "bug_number":984662, "locally":"PASS" }, { "scenario_dir":"sign_up_fill", "site_name":"elvenar" },
{ "scenario_dir":"sign_up_fill", "site_name":"epic_games" }, { "scenario_dir":"sign_up_fill", "site_name":"epic_games" },
{ "scenario_dir":"sign_up_fill", "site_name":"forgeofempires", "disabled":true, "bug_number":984662, "locally":"PASS" }, { "scenario_dir":"sign_up_fill", "site_name":"forgeofempires" },
{ "scenario_dir":"sign_up_fill", "site_name":"freelancer" }, { "scenario_dir":"sign_up_fill", "site_name":"freelancer" },
{ "scenario_dir":"sign_up_fill", "site_name":"garena" }, { "scenario_dir":"sign_up_fill", "site_name":"garena" },
{ "scenario_dir":"sign_up_fill", "site_name":"go_daddy" }, { "scenario_dir":"sign_up_fill", "site_name":"go_daddy" },
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
{ "scenario_dir":"sign_up_fill", "site_name":"naver" }, { "scenario_dir":"sign_up_fill", "site_name":"naver" },
{ "scenario_dir":"sign_up_fill", "site_name":"olx" }, { "scenario_dir":"sign_up_fill", "site_name":"olx" },
{ "scenario_dir":"sign_up_fill", "site_name":"orange" }, { "scenario_dir":"sign_up_fill", "site_name":"orange" },
{ "scenario_dir":"sign_up_fill", "site_name":"paypal", "disabled":true, "bug_number":951847 }, { "scenario_dir":"sign_up_fill", "site_name":"paypal" },
{ "scenario_dir":"sign_up_fill", "site_name":"pch" }, { "scenario_dir":"sign_up_fill", "site_name":"pch" },
{ "scenario_dir":"sign_up_fill", "site_name":"rakuten" }, { "scenario_dir":"sign_up_fill", "site_name":"rakuten" },
{ "scenario_dir":"sign_up_fill", "site_name":"readtheory" }, { "scenario_dir":"sign_up_fill", "site_name":"readtheory" },
...@@ -113,22 +113,22 @@ ...@@ -113,22 +113,22 @@
{ "scenario_dir":"sign_up_fill", "site_name":"typing" }, { "scenario_dir":"sign_up_fill", "site_name":"typing" },
{ "scenario_dir":"sign_up_fill", "site_name":"upwork" }, { "scenario_dir":"sign_up_fill", "site_name":"upwork" },
{ "scenario_dir":"sign_up_fill", "site_name":"usps" }, { "scenario_dir":"sign_up_fill", "site_name":"usps" },
{ "scenario_dir":"sign_up_fill", "site_name":"vodafone", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_fill", "site_name":"vodafone" },
{ "scenario_dir":"sign_up_fill", "site_name":"walmart" }, { "scenario_dir":"sign_up_fill", "site_name":"walmart" },
{ "scenario_dir":"sign_up_fill", "site_name":"wargaming" }, { "scenario_dir":"sign_up_fill", "site_name":"wargaming" },
{ "scenario_dir":"sign_up_fill", "site_name":"xiaomi", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_fill", "site_name":"xiaomi" },
{ "scenario_dir":"sign_up_fill", "site_name":"yahoo" }, { "scenario_dir":"sign_up_fill", "site_name":"yahoo" },
{ "scenario_dir":"sign_up_fill", "site_name":"zoho" }, { "scenario_dir":"sign_up_fill", "site_name":"zoho" },
{ "scenario_dir":"sign_up_pass", "site_name":"4shared" }, { "scenario_dir":"sign_up_pass", "site_name":"4shared" },
{ "scenario_dir":"sign_up_pass", "site_name":"adobe" }, { "scenario_dir":"sign_up_pass", "site_name":"adobe" },
{ "scenario_dir":"sign_up_pass", "site_name":"airbnb", "disabled":true, "bug_number":951847 }, { "scenario_dir":"sign_up_pass", "site_name":"airbnb" },
{ "scenario_dir":"sign_up_pass", "site_name":"amazon" }, { "scenario_dir":"sign_up_pass", "site_name":"amazon" },
{ "scenario_dir":"sign_up_pass", "site_name":"aol" }, { "scenario_dir":"sign_up_pass", "site_name":"aol" },
{ "scenario_dir":"sign_up_pass", "site_name":"autodesk", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_pass", "site_name":"autodesk" },
{ "scenario_dir":"sign_up_pass", "site_name":"battle_net" }, { "scenario_dir":"sign_up_pass", "site_name":"battle_net" },
{ "scenario_dir":"sign_up_pass", "site_name":"booking" }, { "scenario_dir":"sign_up_pass", "site_name":"booking" },
{ "scenario_dir":"sign_up_pass", "site_name":"clever" }, { "scenario_dir":"sign_up_pass", "site_name":"clever" },
{ "scenario_dir":"sign_up_pass", "site_name":"discord_app", "disabled":true, "bug_number":951847 }, { "scenario_dir":"sign_up_pass", "site_name":"discord_app" },
{ "scenario_dir":"sign_up_pass", "site_name":"ea" }, { "scenario_dir":"sign_up_pass", "site_name":"ea" },
{ "scenario_dir":"sign_up_pass", "site_name":"ebay" }, { "scenario_dir":"sign_up_pass", "site_name":"ebay" },
{ "scenario_dir":"sign_up_pass", "site_name":"edmodo" }, { "scenario_dir":"sign_up_pass", "site_name":"edmodo" },
...@@ -148,9 +148,9 @@ ...@@ -148,9 +148,9 @@
{ "scenario_dir":"sign_up_pass", "site_name":"marriott" }, { "scenario_dir":"sign_up_pass", "site_name":"marriott" },
{ "scenario_dir":"sign_up_pass", "site_name":"nitro_type" }, { "scenario_dir":"sign_up_pass", "site_name":"nitro_type" },
{ "scenario_dir":"sign_up_pass", "site_name":"orange" }, { "scenario_dir":"sign_up_pass", "site_name":"orange" },
{ "scenario_dir":"sign_up_pass", "site_name":"paypal", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_pass", "site_name":"paypal" },
{ "scenario_dir":"sign_up_pass", "site_name":"pch" }, { "scenario_dir":"sign_up_pass", "site_name":"pch" },
{ "scenario_dir":"sign_up_pass", "site_name":"pinterest", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_pass", "site_name":"pinterest" },
{ "scenario_dir":"sign_up_pass", "site_name":"quia" }, { "scenario_dir":"sign_up_pass", "site_name":"quia" },
{ "scenario_dir":"sign_up_pass", "site_name":"quizlet" }, { "scenario_dir":"sign_up_pass", "site_name":"quizlet" },
{ "scenario_dir":"sign_up_pass", "site_name":"rakuten" }, { "scenario_dir":"sign_up_pass", "site_name":"rakuten" },
...@@ -164,8 +164,8 @@ ...@@ -164,8 +164,8 @@
{ "scenario_dir":"sign_up_pass", "site_name":"typing" }, { "scenario_dir":"sign_up_pass", "site_name":"typing" },
{ "scenario_dir":"sign_up_pass", "site_name":"united", "locally":"FAIL" }, { "scenario_dir":"sign_up_pass", "site_name":"united", "locally":"FAIL" },
{ "scenario_dir":"sign_up_pass", "site_name":"upwork" }, { "scenario_dir":"sign_up_pass", "site_name":"upwork" },
{ "scenario_dir":"sign_up_pass", "site_name":"usps", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_pass", "site_name":"usps" },
{ "scenario_dir":"sign_up_pass", "site_name":"vodafone", "disabled":true, "bug_number":984662, "locally":"FAIL" }, { "scenario_dir":"sign_up_pass", "site_name":"vodafone" },
{ "scenario_dir":"sign_up_pass", "site_name":"walmart" }, { "scenario_dir":"sign_up_pass", "site_name":"walmart" },
{ "scenario_dir":"sign_up_pass", "site_name":"xiaomi" }, { "scenario_dir":"sign_up_pass", "site_name":"xiaomi" },
{ "scenario_dir":"sign_up_pass", "site_name":"yahoo" }, { "scenario_dir":"sign_up_pass", "site_name":"yahoo" },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment