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 = {
'packages': [
{
'package': 'chromium/chrome/test/data/password/captured_sites',
'version': 'XxyN4JjdvL2TBSIFThfP0pJhd0-4COvFTOMCt356ht0C',
'version': 'q_mI3rtAXvNUW_X3zxca3VcUVdHkgwRqhfTLHt9H7rIC',
}
],
'condition': 'checkout_chromium_password_manager_test_dependencies',
......
......@@ -668,6 +668,9 @@ bool TestRecipeReplayer::ReplayRecordedActions(
} else if (base::CompareCaseInsensitiveASCII(*type, "click") == 0) {
if (!ExecuteClickAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "closeTab") == 0) {
if (!ExecuteCloseTabAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "coolOff") == 0) {
if (!ExecuteCoolOffAction(*action))
return false;
......@@ -686,6 +689,9 @@ bool TestRecipeReplayer::ReplayRecordedActions(
} else if (base::CompareCaseInsensitiveASCII(*type, "pressEscape") == 0) {
if (!ExecutePressEscapeAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "pressSpace") == 0) {
if (!ExecutePressSpaceAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "savePassword") == 0) {
if (!ExecuteSavePasswordAction(*action))
return false;
......@@ -698,8 +704,8 @@ bool TestRecipeReplayer::ReplayRecordedActions(
} else if (base::CompareCaseInsensitiveASCII(*type, "typePassword") == 0) {
if (!ExecuteTypePasswordAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(
*type, "updatePassword") == 0) {
} else if (base::CompareCaseInsensitiveASCII(*type, "updatePassword") ==
0) {
if (!ExecuteUpdatePasswordAction(*action))
return false;
} else if (base::CompareCaseInsensitiveASCII(*type, "validateField") == 0) {
......@@ -773,25 +779,14 @@ bool TestRecipeReplayer::InitializeBrowserToExecuteRecipe(
bool TestRecipeReplayer::ExecuteAutofillAction(
const base::DictionaryValue& action) {
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
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;
VLOG(1) << "Invoking Chrome Autofill on `" << xpath << "`.";
PageActivityObserver page_activity_observer(frame);
// Clear the input box first, in case a previous value is there.
......@@ -818,23 +813,8 @@ bool TestRecipeReplayer::ExecuteAutofillAction(
bool TestRecipeReplayer::ExecuteClickAction(
const base::DictionaryValue& action) {
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame))
return false;
std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
VLOG(1) << "Left mouse clicking `" << xpath << "`.";
......@@ -852,6 +832,13 @@ bool TestRecipeReplayer::ExecuteClickAction(
return true;
}
bool TestRecipeReplayer::ExecuteCloseTabAction(
const base::DictionaryValue& action) {
VLOG(1) << "Closing Active Tab";
browser_->tab_strip_model()->CloseSelectedTabs();
return true;
}
bool TestRecipeReplayer::ExecuteCoolOffAction(
const base::DictionaryValue& action) {
base::RunLoop heart_beat;
......@@ -877,19 +864,8 @@ bool TestRecipeReplayer::ExecuteCoolOffAction(
bool TestRecipeReplayer::ExecuteHoverAction(
const base::DictionaryValue& action) {
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
VLOG(1) << "Hovering over `" << xpath << "`.";
......@@ -934,48 +910,38 @@ bool TestRecipeReplayer::ExecuteForceLoadPage(
bool TestRecipeReplayer::ExecutePressEnterAction(
const base::DictionaryValue& action) {
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame))
return false;
std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
VLOG(1) << "Pressing 'Enter' on `" << xpath << "`.";
PageActivityObserver page_activity_observer(frame);
if (!PlaceFocusOnElement(xpath, frame_path, frame))
return false;
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);
SimulateKeyPressWrapper(content::WebContents::FromRenderFrameHost(frame),
ui::DomKey::ENTER);
page_activity_observer.WaitTillPageIsIdle();
return true;
}
bool TestRecipeReplayer::ExecutePressEscapeAction(
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";
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();
return true;
}
......@@ -1049,19 +1015,8 @@ bool TestRecipeReplayer::ExecuteSelectDropdownAction(
}
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
VLOG(1) << "Select option '" << index.value() << "' from `" << xpath << "`.";
......@@ -1088,22 +1043,11 @@ bool TestRecipeReplayer::ExecuteTypeAction(
return false;
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame))
return false;
VLOG(1) << "Typing '" << value << "' inside `" << xpath << "`.";
VLOG(1) << "Typing '" << *value << "' inside `" << xpath << "`.";
PageActivityObserver page_activity_observer(frame);
if (!ExecuteJavaScriptOnElementByXpath(
frame, xpath,
......@@ -1121,23 +1065,8 @@ bool TestRecipeReplayer::ExecuteTypeAction(
bool TestRecipeReplayer::ExecuteTypePasswordAction(
const base::DictionaryValue& action) {
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame;
if (!GetTargetFrameFromAction(action, &frame))
return false;
std::vector<std::string> frame_path;
if (!GetIFramePathFromAction(action, &frame_path))
return false;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame, true))
return false;
const std::string* value =
......@@ -1153,17 +1082,13 @@ bool TestRecipeReplayer::ExecuteTypePasswordAction(
return false;
}
if (!PlaceFocusOnElement(xpath, frame_path, frame))
return false;
VLOG(1) << "Typing '" << value << "' inside `" << xpath << "`.";
PageActivityObserver page_activity_observer(frame);
VLOG(1) << "Typing '" << *value << "' inside `" << xpath << "`.";
content::WebContents* web_contents =
content::WebContents::FromRenderFrameHost(frame);
PageActivityObserver page_activity_observer(web_contents);
for (size_t index = 0; index < value->size(); index++) {
ui::DomKey key = ui::DomKey::FromCharacter(value->at(index));
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);
SimulateKeyPressWrapper(web_contents,
ui::DomKey::FromCharacter(value->at(index)));
}
page_activity_observer.WaitTillPageIsIdle();
return true;
......@@ -1191,26 +1116,8 @@ bool TestRecipeReplayer::ExecuteUpdatePasswordAction(
bool TestRecipeReplayer::ExecuteValidateFieldValueAction(
const base::DictionaryValue& action) {
std::string xpath;
if (!GetTargetHTMLElementXpathFromAction(action, &xpath))
return false;
int visibility_enum_val;
if (!GetTargetHTMLElementVisibilityEnumFromAction(action,
&visibility_enum_val))
return false;
content::RenderFrameHost* frame;
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 (visibility_enum_val & kReadyStateOnTop)
visibility_enum_val -= kReadyStateOnTop;
if (!WaitForElementToBeReady(xpath, visibility_enum_val, frame))
if (!ExtractFrameAndVerifyElement(action, &xpath, &frame, false, true))
return false;
const base::Value* autofill_prediction_container =
......@@ -1398,6 +1305,44 @@ bool TestRecipeReplayer::GetTargetFrameFromAction(
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(
const base::DictionaryValue& action,
std::vector<std::string>* iframe_path) {
......@@ -1783,6 +1728,15 @@ bool TestRecipeReplayer::SimulateMouseHoverAt(
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() {
content::PrepContentsForBeforeUnloadTest(GetWebContents());
ui_test_utils::NavigateToURLWithDisposition(
......
......@@ -298,10 +298,12 @@ class TestRecipeReplayer {
bool ExecuteAutofillAction(const base::DictionaryValue& action);
bool ExecuteClickAction(const base::DictionaryValue& action);
bool ExecuteCoolOffAction(const base::DictionaryValue& action);
bool ExecuteCloseTabAction(const base::DictionaryValue& action);
bool ExecuteHoverAction(const base::DictionaryValue& action);
bool ExecuteForceLoadPage(const base::DictionaryValue& action);
bool ExecutePressEnterAction(const base::DictionaryValue& action);
bool ExecutePressEscapeAction(const base::DictionaryValue& action);
bool ExecutePressSpaceAction(const base::DictionaryValue& action);
bool ExecuteRunCommandAction(const base::DictionaryValue& action);
bool ExecuteSavePasswordAction(const base::DictionaryValue& action);
bool ExecuteSelectDropdownAction(const base::DictionaryValue& action);
......@@ -322,6 +324,11 @@ class TestRecipeReplayer {
bool GetTargetHTMLElementVisibilityEnumFromAction(
const base::DictionaryValue& action,
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,
const int visibility_enum_val,
content::RenderFrameHost* frame);
......@@ -347,6 +354,8 @@ class TestRecipeReplayer {
const std::string& expected_value,
const std::string& validation_field,
const bool ignoreCase = false);
void SimulateKeyPressWrapper(content::WebContents* web_contents,
ui::DomKey key);
void NavigateAwayAndDismissBeforeUnloadDialog();
bool HasChromeStoredCredential(const base::DictionaryValue& action,
bool* stored_cred);
......
......@@ -2,18 +2,18 @@
"tests": [
{ "scenario_dir":"capture_update_pass", "site_name":"4shared" },
{ "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":"clever", "disabled":true, "bug_number":984662 },
{ "scenario_dir":"capture_update_pass", "site_name":"github", "disabled":true, "bug_number":951847 },
{ "scenario_dir":"capture_update_pass", "site_name":"clever" },
{ "scenario_dir":"capture_update_pass", "site_name":"github" },
{ "scenario_dir":"capture_update_pass", "site_name":"go_daddy" },
{ "scenario_dir":"capture_update_pass", "site_name":"grammarly" },
{ "scenario_dir":"capture_update_pass", "site_name":"indeed" },
{ "scenario_dir":"capture_update_pass", "site_name":"librus" },
{ "scenario_dir":"capture_update_pass", "site_name":"mit" },
{ "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":"paypal", "disabled":true, "bug_number":951847 },
{ "scenario_dir":"capture_update_pass", "site_name":"nexon" },
{ "scenario_dir":"capture_update_pass", "site_name":"paypal" },
{ "scenario_dir":"capture_update_pass", "site_name":"rakuten" },
{ "scenario_dir":"capture_update_pass", "site_name":"readtheory" },
{ "scenario_dir":"capture_update_pass", "site_name":"roblox" },
......@@ -24,7 +24,7 @@
{ "scenario_dir":"capture_update_pass", "site_name":"wargaming" },
{ "scenario_dir":"capture_update_pass", "site_name":"yahoo" },
{ "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":"amazon" },
{ "scenario_dir":"sign_in_pass", "site_name":"autodesk" },
......@@ -36,7 +36,7 @@
{ "scenario_dir":"sign_in_pass", "site_name":"freelancer" },
{ "scenario_dir":"sign_in_pass", "site_name":"garena" },
{ "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":"grammarly" },
{ "scenario_dir":"sign_in_pass", "site_name":"groupon" },
......@@ -51,10 +51,10 @@
{ "scenario_dir":"sign_in_pass", "site_name":"nexon" },
{ "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":"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":"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":"readtheory" },
{ "scenario_dir":"sign_in_pass", "site_name":"rediff" },
......@@ -69,7 +69,7 @@
{ "scenario_dir":"sign_in_pass", "site_name":"wp_pl" },
{ "scenario_dir":"sign_in_pass", "site_name":"yahoo" },
{ "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":"allegro" },
{ "scenario_dir":"sign_up_fill", "site_name":"amazon" },
......@@ -79,14 +79,14 @@
{ "scenario_dir":"sign_up_fill", "site_name":"bet_365" },
{ "scenario_dir":"sign_up_fill", "site_name":"clever" },
{ "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":"dreambox", "disabled":true, "bug_number":984662, "locally":"FAIL" },
{ "scenario_dir":"sign_up_fill", "site_name":"discord_app" },
{ "scenario_dir":"sign_up_fill", "site_name":"dreambox" },
{ "scenario_dir":"sign_up_fill", "site_name":"ea" },
{ "scenario_dir":"sign_up_fill", "site_name":"ebay" },
{ "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":"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":"garena" },
{ "scenario_dir":"sign_up_fill", "site_name":"go_daddy" },
......@@ -101,7 +101,7 @@
{ "scenario_dir":"sign_up_fill", "site_name":"naver" },
{ "scenario_dir":"sign_up_fill", "site_name":"olx" },
{ "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":"rakuten" },
{ "scenario_dir":"sign_up_fill", "site_name":"readtheory" },
......@@ -113,22 +113,22 @@
{ "scenario_dir":"sign_up_fill", "site_name":"typing" },
{ "scenario_dir":"sign_up_fill", "site_name":"upwork" },
{ "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":"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":"zoho" },
{ "scenario_dir":"sign_up_pass", "site_name":"4shared" },
{ "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":"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":"booking" },
{ "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":"ebay" },
{ "scenario_dir":"sign_up_pass", "site_name":"edmodo" },
......@@ -148,9 +148,9 @@
{ "scenario_dir":"sign_up_pass", "site_name":"marriott" },
{ "scenario_dir":"sign_up_pass", "site_name":"nitro_type" },
{ "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":"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":"quizlet" },
{ "scenario_dir":"sign_up_pass", "site_name":"rakuten" },
......@@ -164,8 +164,8 @@
{ "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":"upwork" },
{ "scenario_dir":"sign_up_pass", "site_name":"usps", "disabled":true, "bug_number":984662, "locally":"FAIL" },
{ "scenario_dir":"sign_up_pass", "site_name":"vodafone", "disabled":true, "bug_number":984662, "locally":"FAIL" },
{ "scenario_dir":"sign_up_pass", "site_name":"usps" },
{ "scenario_dir":"sign_up_pass", "site_name":"vodafone" },
{ "scenario_dir":"sign_up_pass", "site_name":"walmart" },
{ "scenario_dir":"sign_up_pass", "site_name":"xiaomi" },
{ "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