1package com.android.testing.uiautomation.demo;
2
3import com.android.testing.uiautomation.AutomationProvider;
4import com.android.testing.uiautomation.InjectAutomationProvider;
5import com.android.testing.uiautomation.InjectParams;
6import com.android.testing.uiautomation.UiTestHelper;
7
8import android.os.Bundle;
9import android.os.Environment;
10import android.test.AndroidTestCase;
11
12import java.io.File;
13import java.io.FileWriter;
14import java.io.Writer;
15
16public class EmailTest extends AndroidTestCase {
17
18    @InjectParams
19    private Bundle mParams;
20
21    @InjectAutomationProvider
22    private AutomationProvider mProvider;
23
24    private Writer mWriter;
25    private String mUsername, mPassword;
26
27    @Override
28    protected void setUp() throws Exception {
29        super.setUp();
30        assertNotNull(mParams);
31        assertNotNull(mProvider);
32        mWriter = new FileWriter(new File(Environment.getExternalStorageDirectory(),
33                "ui_trace_log.txt"));
34        mProvider.setTraceLoggerOutput(mWriter);
35        mUsername = mParams.getString("username");
36        mPassword = mParams.getString("password");
37        assertNotNull("need username from command line", mUsername);
38        assertNotNull("need password from command line", mPassword);
39    }
40
41    public void testEmail() throws Exception {
42        UiTestHelper helper = new UiTestHelper(getContext(), mProvider);
43        assertTrue("failed to launch Email", helper.launchApplication("Email"));
44        assertTrue("not in Account setup",
45                helper.waitForWindow("Account setup"));
46        assertTrue("failed to set username",
47                mProvider.setTextFieldByLabel("Email address", mUsername));
48        assertTrue("failed to set password", mProvider.setTextFieldByLabel("Password", mPassword));
49        assertTrue("Next button not enabled", mProvider.isEnabled("text:Next"));
50        assertTrue("failed to invoke next button", mProvider.click("text:Next"));
51        assertTrue("not in Account settings",
52                helper.waitForWindow("Account settings", 60000));
53        assertTrue("Next button not enabled", mProvider.isEnabled("text:Next"));
54        assertTrue("failed to invoke next button", mProvider.click("text:Next"));
55        assertTrue("not in Account setup",
56                helper.waitForWindow("Account setup"));
57        assertTrue("failed to set display name", mProvider.setTextFieldByLabel(
58                "Your name", "AOL"));
59        assertTrue("Next button not enabled", mProvider.isEnabled("text:Next"));
60        assertTrue("failed to invoke next button", mProvider.click("text:Next"));
61    }
62
63    @Override
64    protected void tearDown() throws Exception {
65        mWriter.flush();
66        mWriter.close();
67        super.tearDown();
68    }
69}
70