Merge "Fix bookmarkWebSiteInBrowser test."
diff --git a/adb_stress_tests/util.py b/adb_stress_tests/util.py
index fb02a17..73cf657 100644
--- a/adb_stress_tests/util.py
+++ b/adb_stress_tests/util.py
@@ -8,6 +8,7 @@
import subprocess
import sys
import time
+import platform
def print_progress(perc, prefix='',
@@ -48,9 +49,16 @@
output, error = proc.communicate()
connected = []
# verify expected emulators/devices are present
- for emulator_entry in output.split('\n')[1:]:
+ # Note that since Windows includes a carriage return, we
+ # do it in a seperate loop.
+ if platform.system() is not 'Windows':
+ for emulator_entry in output.split('\n')[1:]:
if emulator_entry != '':
- connected.append(emulator_entry.split('\t')[0])
+ connected.append(emulator_entry.split('\t')[0])
+ else:
+ for emulator_entry in output.split('\r\n')[1:]:
+ if emulator_entry != '':
+ connected.append(emulator_entry.split('\t')[0])
success = True
if len(connected) != devices:
diff --git a/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/ApiDemosTest.java b/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/ApiDemosTest.java
index 4b471ae..fea69af 100644
--- a/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/ApiDemosTest.java
+++ b/system_image_uitests/app/src/androidTest/java/com/android/devtools/systemimage/uitest/smoke/ApiDemosTest.java
@@ -37,6 +37,7 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.util.StringTokenizer;
import java.util.concurrent.TimeUnit;
@@ -71,6 +72,10 @@
* Minimum Length: 6 Minimum.
* Minimum Letters: 1.
* Minimum Numeric: 1.
+ * Minimum Lower case: 1.
+ * Minimum Upper Case: 1.
+ * Minimum Symbols: 1.
+ * Minimum non-Letters: 1.
* Verify:
* 1. Settings —> Security —> Screen Lock —> Set it to Password.
* You are asked to set password according to rules mentioned above.
@@ -95,35 +100,57 @@
itemList.getChildByText(new UiSelector().className("android.widget.TextView"),
"Password quality").clickAndWaitForNewWindow();
- //Specify list items to choose from "PASSWORD QUALITY".
+ // Set the criteria for password to 'Complex' type.
itemList.getChildByText(
new UiSelector().className("android.widget.RelativeLayout"), "Password quality")
.clickAndWaitForNewWindow();
device.findObject(new UiSelector().text("Complex")).clickAndWaitForNewWindow();
- itemList.getChildByText(new UiSelector().className("android.widget.TextView"),
- "Minimum length").clickAndWaitForNewWindow();
- editText = device.findObject(new UiSelector().className("android.widget.EditText"));
- editText.setText("6");
- device.findObject(new UiSelector().text("OK")).click();
+ // Set minimum length to 6.
+ setPasswordCriteria(device, "Minimum length", "6");
- itemList.getChildByText(new UiSelector().className("android.widget.TextView"),
- "Minimum letters").clickAndWaitForNewWindow();
- editText = device.findObject(new UiSelector().className("android.widget.EditText"));
- editText.setText("1");
- device.findObject(new UiSelector().text("OK")).click();
+ // Set minimum letters to 1.
+ setPasswordCriteria(device, "Minimum letters", "1");
- itemList.getChildByText(new UiSelector().className("android.widget.TextView"),
- "Minimum numeric").clickAndWaitForNewWindow();
- editText = device.findObject(new UiSelector().className("android.widget.EditText"));
- editText.setText("1");
- device.findObject(new UiSelector().text("OK")).click();
+ // Set minimum numerics to 1.
+ setPasswordCriteria(device, "Minimum numeric", "1");
+
+ // Set minimum lower case letters to 1.
+ setPasswordCriteria(device, "Minimum lower case", "1");
+
+ // Set minimum upper case letters to 1.
+ setPasswordCriteria(device, "Minimum upper case", "1");
+
+ // Set minimum special symbols to 1.
+ setPasswordCriteria(device, "Minimum symbols", "1");
+
+ // Set minimum non-letter to 1.
+ setPasswordCriteria(device, "Minimum non-letter", "1");
//Verify that setting the password meets the "PASSWORD QUALITY" criteria.
verifyPasswordQuality(instrumentation, device);
}
+
+ /**
+ * Set the criteria for password.
+ */
+ private void setPasswordCriteria(
+ UiDevice device,
+ String criteria,
+ String value) throws Exception{
+ UiScrollable itemList =
+ new UiScrollable(new UiSelector().resourceId(Res.ANDROID_LIST_RES));
+ itemList.setAsVerticalList();
+ itemList.getChildByText(new UiSelector().className("android.widget.TextView"),
+ criteria).clickAndWaitForNewWindow();
+ UiObject editText = device.findObject(new UiSelector().className("android.widget.EditText"));
+ editText.setText(value);
+ device.findObject(new UiSelector().text("OK")).clickAndWaitForNewWindow();
+ }
+
+
/**
* Verify the functionality of "PASSWORD QUALITY".
*/
@@ -144,23 +171,49 @@
UiObject passwordField = device.findObject(
new UiSelector().className("android.widget.EditText"));
+ passwordField.waitForExists(TimeUnit.SECONDS.toMillis(3L));
//Assert "Minimum Length".
- passwordField.setText("ab!1b");
- Assert.assertTrue(
- device.findObject(
- new UiSelector().textContains("Must be at least 6 characters")).exists());
- pressDeleteKey(device, 5);
+ validateWrongPassword(device, "aB!1b", "Must be at least 6 characters");
+
+ //Assert "Minimum Upper Case".
+ validateWrongPassword(device, "abc1!d", "Must contain at least 1 uppercase letter");
+
+ //Assert "Minimum Lower Case".
+ validateWrongPassword(device, "ABC1!D", "Must contain at least 1 lowercase letter");
+
+ //Assert "Minimum Numerical Digits".
+ validateWrongPassword(device, "AaBC!D", "Must contain at least 1 numerical digit");
+
+ //Assert "Minimum Special Symbols".
+ validateWrongPassword(device, "AaBC1D", "Must contain at least 1 special symbol");
//Assertion for a valid password that meets all the "PASSWORD QUALITY" criteria.
- passwordField.setText("abc1!d");
+ passwordField.setText("Abc1!d");
UiObject ContinueButton = device.findObject(
new UiSelector().className("android.widget.Button").textContains("Continue"));
ContinueButton.waitForExists(TimeUnit.SECONDS.toMillis(3L));
Assert.assertTrue(ContinueButton.isEnabled());
-
}
+
+ /**
+ * Assert the wrong password value with the correct error message.
+ */
+ private void validateWrongPassword(UiDevice device,
+ String password,
+ String errorMessage) throws Exception {
+ UiObject passwordField = device.findObject(
+ new UiSelector().className("android.widget.EditText"));
+
+ passwordField.setText(password);
+ Assert.assertTrue(
+ device.findObject(
+ new UiSelector().textContains(errorMessage)).exists());
+ pressDeleteKey(device, password.length());
+ }
+
+
/**
* Common code to delete all the characters in the password field.
*/
@@ -180,4 +233,4 @@
SettingsUtil.deactivate(instrumentation, "Sample Device Admin");
}
-}
+}
\ No newline at end of file