Exemplo n.º 1
0
  @When("^I start the program$")
  public void I_start_the_program() throws InterruptedException {
    programWaitLock = new Semaphore(programWaitLockPermits);
    addScriptEndCallbacks();

    Solo solo = (Solo) Cucumber.get(Cucumber.KEY_SOLO);
    assertEquals(
        "I am in the wrong Activity.",
        MainMenuActivity.class,
        solo.getCurrentActivity().getClass());
    solo.clickOnView(solo.getView(org.catrobat.catroid.R.id.main_menu_button_continue));
    solo.waitForActivity(ProjectActivity.class.getSimpleName(), 3000);
    assertEquals(
        "I am in the wrong Activity.", ProjectActivity.class, solo.getCurrentActivity().getClass());
    solo.clickOnView(solo.getView(org.catrobat.catroid.R.id.button_play));
    solo.waitForActivity(StageActivity.class.getSimpleName(), 3000);
    assertEquals(
        "I am in the wrong Activity.", StageActivity.class, solo.getCurrentActivity().getClass());

    synchronized (programStartWaitLock) {
      if (!programHasStarted) {
        programStartWaitLock.wait(10000);
      }
    }
  }
  public void testBrowseHouseTest() {
    try {
      Report.setTCNameLog(testName);
      // 如果打开应用后弹出“是否打开定位功能”的提示,选择“取消”
      if (solo.searchText("提示")) {
        solo.clickOnButton(1);
      }
      if (solo.searchText("刷新")) {
        solo.clickOnText("刷新");
      }

      //			Action.wait(solo, R.id.view_list_item_tv_title, count, "等待详细房源类表加载成功");
      //			Report.writeHTMLLog("安居客浏览房源用例", "附近页房源列表显示完全",Report.DONE,"");

      // 如果当前城市不是上海,就切换至上海
      Action.switchCity(solo, "上海");
      solo.clickOnText("搜索");
      Action.scroolUpPage(solo, "浏览房源");
      solo.clickOnText(bureau);
      solo.clickOnText(area);
      Report.writeHTMLLog("安居客浏览房源用例", "选中区域".concat(bureau).concat(area), Report.DONE, "");

      Action.wait(solo, R.id.view_list_item_tv_title, count, "等待房源列表信息显示成功");
      solo.clickOnView(solo.getView(R.id.view_list_item_tv_title));
      solo.waitForText("收藏");
      String houseTitle =
          (String) ((TextView) solo.getCurrentActivity().findViewById(R.id.prop_title)).getText();
      Report.writeHTMLLog(
          "安居客浏览房源用例", "房源列表第一套房源标题为:" + houseTitle, "Done", Action.screenShot(solo));

      // 点击返回按钮
      Action.clickById(solo, R.id.detail_back_button, "点击返回按钮");

      // 点击”更多"tab
      solo.clickOnText("我的");
      solo.clickOnText("浏览记录");
      solo.waitForText("清空");
      solo.clickOnView(solo.getView(R.id.view_for_house_history_item_tv_title));
      Report.writeHTMLLog("安居客浏览房源用例", "选中最近浏览的第一套房源", Report.DONE, "");
      String browseHouseTitle =
          (String) ((TextView) solo.getCurrentActivity().findViewById(R.id.prop_title)).getText();
      Report.writeHTMLLog("安居客浏览房源用例", "最近浏览的第一套房源标题为:" + browseHouseTitle, Report.DONE, "");
      Boolean flag = Action.assertString(solo, "比较收藏房源标题是否匹配", houseTitle, browseHouseTitle);
      if (flag) {
        Report.writeHTMLLog("安居客浏览房源用例", "匹配成功", Report.PASS, "");
      } else {
        Report.writeHTMLLog("安居客浏览房源用例", "匹配不成功用例失败", Report.FAIL, Action.screenShot(solo));
      }
      //			Report.seleniumReport();
    } catch (Exception e) {
      String ps = Action.screenShot(solo);
      Report.writeHTMLLog("出现异常:" + e.getMessage(), "脚本停止", Report.FAIL, ps);
      //			Report.seleniumReport();
    }
  }
  public void testCourseDetails() {
    Course course = CourseContainer.instance().get(0);
    course.exams = SimpleMockCrawler.createExams(course);

    solo.clickOnText("Course #0");

    assertEquals(course.name, ((TextView) solo.getView(R.id.course_name, 0)).getText());

    View exam_view;

    exam_view = solo.getView(R.id.exam_item, 0);
    assertEquals("Course #0", ((TextView) exam_view.findViewById(R.id.course_text)).getText());

    solo.goBack();
  }
Exemplo n.º 4
0
  /**
   * The first walkthrough. Documented on the wiki. Starts on the login, ends up navigating to a
   * lesson after logging in.
   */
  @Test
  public void testWalkthroughLoginToDashboardToCoursesToCourseToLesson() {
    // Login first
    EditText user = solo.getEditText(0);
    EditText pass = solo.getEditText(1);
    solo.typeText(user, "*****@*****.**");
    solo.typeText(pass, "password");
    solo.clickOnButton(solo.getString(com.huskysoft.eduki.R.string.login));
    // Need to sleep to allow the activity to finish
    solo.sleep(8000);
    solo.assertCurrentActivity("Wrong activity", MainActivity.class);

    // Click on the all courses button
    solo.clickOnActionBarItem(com.huskysoft.eduki.R.id.action_courses);
    solo.sleep(1000);
    solo.assertCurrentActivity("Did not start the Course list Activity", CoursesListActivity.class);

    // Wait for the courses list to appear
    solo.waitForView(solo.getView(com.huskysoft.eduki.R.id.courseListView));
    solo.sleep(1000);
    List<Course> courseList = ((CoursesListActivity) solo.getCurrentActivity()).getCourseList();
    assertNotSame(courseList.size(), 0);
    solo.clickOnText("INTRODUCTION");
    solo.assertCurrentActivity("Wrong activity", CourseActivity.class);

    // Wait for the course page to appear
    solo.waitForView(solo.getView(com.huskysoft.eduki.R.id.course_activity));
    solo.sleep(1000);

    // Click a lesson, wait for it to appear
    List<Lesson> lessonList = ((CourseActivity) solo.getCurrentActivity()).getLessonList();
    assertNotSame(lessonList.size(), 0);
    solo.clickOnText(lessonList.get(0).toString());

    solo.waitForView(solo.getView(com.huskysoft.eduki.R.id.lessonViewLayoutText));
    solo.sleep(1000);
    String content =
        ((TextView)
                solo.getCurrentActivity()
                    .findViewById(com.huskysoft.eduki.R.id.lessonViewLayoutText))
            .getText()
            .toString();
    assertFalse(content.equals(""));
  }
Exemplo n.º 5
0
 public void addTab() {
   mSolo.clickOnView(mSolo.getView(R.id.tabs));
   // wait for addTab to appear (this is usually immediate)
   boolean success =
       waitForCondition(
           new Condition() {
             @Override
             public boolean isSatisfied() {
               View addTabView = mSolo.getView(R.id.add_tab);
               if (addTabView == null) {
                 return false;
               }
               return true;
             }
           },
           MAX_WAIT_MS);
   mAsserter.ok(success, "waiting for add tab view", "add tab view available");
   mSolo.clickOnView(mSolo.getView(R.id.add_tab));
 }
 public void testAddCourseScreenOriantationChange() {
   ListView listView;
   solo.clickOnView(getActivity().findViewById(R.id.add));
   solo.enterText(0, "Course");
   solo.clickOnEditText(0);
   solo.sendKey(Solo.ENTER);
   solo.waitForText("THE COURSE #2", 1, 5);
   listView = (ListView) solo.getView(android.R.id.list);
   assertEquals("List view should contain 2 items before doing anything", 2, listView.getCount());
   solo.setActivityOrientation(Solo.LANDSCAPE);
   solo.sleep(500);
   listView = (ListView) solo.getView(android.R.id.list);
   solo.sleep(3000);
   assertEquals("List view should't change size after oriantation change", 2, listView.getCount());
   assertEquals(
       "SearchView should not reset.", "Course", solo.getEditText(0).getText().toString());
   solo.goBack();
   solo.goBack();
 }
Exemplo n.º 7
0
 public final void verifyPageTitle(String title) {
   final TextView urlBarTitle = (TextView) mSolo.getView(R.id.url_bar_title);
   String pageTitle = null;
   if (urlBarTitle != null) {
     // Wait for the title to make sure it has been displayed in case the view
     // does not update fast enough
     waitForCondition(new VerifyTextViewText(urlBarTitle, title), MAX_WAIT_MS);
     pageTitle = urlBarTitle.getText().toString();
   }
   mAsserter.is(pageTitle, title, "Page title is correct");
 }
Exemplo n.º 8
0
 public final void verifyUrl(String url) {
   final EditText urlEditText = (EditText) mSolo.getView(R.id.url_edit_text);
   String urlBarText = null;
   if (urlEditText != null) {
     // wait for a short time for the expected text, in case there is a delay
     // in updating the view
     waitForCondition(new VerifyTextViewText(urlEditText, url), VERIFY_URL_TIMEOUT);
     urlBarText = urlEditText.getText().toString();
   }
   mAsserter.is(urlBarText, url, "Browser toolbar URL stayed the same");
 }
 public void testEmptyCourseListClick() {
   ListView listView = (ListView) solo.getView(R.id.courses_list);
   View emptyview = listView.getEmptyView();
   assertEquals("EmptyView shoudl not be visible", View.GONE, emptyview.getVisibility());
   deleteAllCourses();
   assertEquals(0, listView.getCount());
   assertEquals("Empty view should be visible", View.VISIBLE, emptyview.getVisibility());
   solo.clickOnView(emptyview);
   solo.assertCurrentActivity(
       "Current activity shoudl Be the AddCourse Activity", AddCourseActivity.class);
   solo.goBack();
 }
Exemplo n.º 10
0
  /**
   * Enhanced view finder. First tries to find it from Activity, then from all Views under ViewRoot.
   */
  protected final View findViewById(int id) {
    View view = solo.getView(id);
    if (view != null) return view;

    ArrayList<View> views = solo.getViews();
    for (View v : views) {
      if (v.getId() == id) {
        return v;
      }
    }
    return null;
  }
Exemplo n.º 11
0
  /**
   * The second test, documented on the wiki. Starts on login. Does not login, instead navigates to
   * a course list and ends up at a quiz.
   */
  @Test
  public void testWalkthroughLoginToCoursesListToCourseToQuiz() {
    // Need to sleep to allow the activity to finish
    solo.clickOnActionBarItem(com.huskysoft.eduki.R.id.action_courses);
    solo.sleep(1000);
    solo.assertCurrentActivity("Did not start the Course list Activity", CoursesListActivity.class);

    // Wait for the courses list to appear
    solo.waitForView(solo.getView(com.huskysoft.eduki.R.id.courseListView));
    solo.sleep(1000);
    List<Course> courseList = ((CoursesListActivity) solo.getCurrentActivity()).getCourseList();
    assertNotSame(courseList.size(), 0);
    solo.clickOnText("INTRODUCTION");
    solo.assertCurrentActivity("Wrong activity", CourseActivity.class);

    // Wait for the course page to appear
    solo.waitForView(solo.getView(com.huskysoft.eduki.R.id.course_activity));
    solo.sleep(1000);

    // Click a quiz, wait for it to appear
    List<Quiz> quizList = ((CourseActivity) solo.getCurrentActivity()).getQuizList();
    assertNotSame(quizList.size(), 0);
    solo.clickOnText(quizList.get(0).toString());

    solo.waitForView(solo.getView(com.huskysoft.eduki.R.id.quizScrollView));
    solo.sleep(2000); // Sleep to wait for the answers to populate
    List<RadioGroup> answersGroupList =
        ((QuizzesViewActivity) solo.getCurrentActivity()).getAnswerGroup();
    for (int i = 0; i < answersGroupList.size(); i++) {
      RadioGroup current_rg = answersGroupList.get(i);
      List<RadioButton> list_rb = getRadioButtons(current_rg);
      assertTrue(list_rb.size() != 0);
      solo.clickOnView(list_rb.get(0)); // Answer "A" for everything
      solo.sleep(500);
    }
    solo.sleep(1000);
    solo.clickOnButton("SUBMIT");
    solo.waitForActivity(QuizzesResultsActivity.class);
    solo.assertCurrentActivity("Wrong activity", QuizzesResultsActivity.class);
  }
Exemplo n.º 12
0
  protected final void enterUrl(String url) {
    final EditText urlEditView = (EditText) mSolo.getView(R.id.url_edit_text);

    focusUrlBar();

    // Send the keys for the URL we want to enter
    mSolo.clearEditText(urlEditView);
    mSolo.enterText(urlEditView, url);

    // Get the URL text from the URL bar EditText view
    final String urlBarText = urlEditView.getText().toString();
    mAsserter.is(url, urlBarText, "URL typed properly");
  }
Exemplo n.º 13
0
 /**
  * click on the view id
  *
  * @param arguments id of the view to click
  * @return response with the status of the command
  */
 private CommandResponse clickOnView(String[] arguments) {
   String command = "the command  clickOnView";
   CommandResponse result = new CommandResponse();
   try {
     command += "(" + arguments[0] + ")";
     View view = solo.getView(Integer.parseInt(arguments[0]));
     clickOnView(view, false, false);
     result.setResponse(command);
     result.setSucceeded(true);
   } catch (Exception e) {
     result = handleException(command, e);
   }
   return result;
 }
 public void testDeleteCourses() {
   solo.clickOnCheckBox(1);
   solo.clickOnCheckBox(3);
   solo.clickOnCheckBox(5);
   solo.clickOnCheckBox(7);
   solo.clickOnView(getActivity().findViewById(R.id.delete));
   ListView listView = (ListView) solo.getView(R.id.courses_list);
   assertEquals("Listview should only contain 6 courses", 5, listView.getCount());
   for (int i = 0; i < 9; i++) {
     if (i % 2 == 0) {
       assertTrue(solo.searchText("Course #" + i));
     }
   }
 }
Exemplo n.º 15
0
  public final void verifyHomePagerHidden() {
    final View homePagerContainer = mSolo.getView(R.id.home_pager_container);

    boolean rc =
        waitForCondition(
            new Condition() {
              @Override
              public boolean isSatisfied() {
                return homePagerContainer.getVisibility() != View.VISIBLE;
              }
            },
            MAX_WAIT_HOME_PAGER_HIDDEN_MS);

    if (!rc) {
      mAsserter.ok(rc, "Verify HomePager is hidden", "HomePager is hidden");
    }
  }
Exemplo n.º 16
0
  public void testSpinnerUpdatesRename() {
    String newName = "nameRenamed";
    String spinnerNothingText = solo.getString(R.string.broadcast_nothing_selected);

    solo.clickOnText(spinnerNothingText);
    assertTrue(costumeName + " is not in Spinner", solo.searchText(costumeName));
    assertTrue(costumeName2 + " is not in Spinner", solo.searchText(costumeName2));
    solo.goBack();
    solo.clickOnText(getActivity().getString(R.string.backgrounds));
    solo.clickOnView(solo.getView(R.id.costume_name));
    solo.clearEditText(0);
    solo.enterText(0, newName);
    solo.clickOnButton(getActivity().getString(R.string.ok));
    solo.sleep(500);
    solo.clickOnText(getActivity().getString(R.string.scripts));
    solo.clickOnText(spinnerNothingText);
    assertTrue(newName + " is not in Spinner", solo.searchText(newName));
    assertTrue(costumeName2 + " is not in Spinner", solo.searchText(costumeName2));
  }
Exemplo n.º 17
0
  /** Click on the URL bar to focus it and enter editing mode. */
  protected final void focusUrlBar() {
    // Click on the browser toolbar to enter editing mode
    final View toolbarView = mSolo.getView(R.id.browser_toolbar);
    mSolo.clickOnView(toolbarView);

    // Wait for highlighed text to gain focus
    boolean success =
        waitForCondition(
            new Condition() {
              @Override
              public boolean isSatisfied() {
                EditText urlEditText = mSolo.getEditText(0);
                if (urlEditText.isInputMethodTarget()) {
                  return true;
                } else {
                  mSolo.clickOnEditText(0);
                  return false;
                }
              }
            },
            MAX_WAIT_ENABLED_TEXT_MS);

    mAsserter.ok(success, "waiting for urlbar text to gain focus", "urlbar text gained focus");
  }
  public void testLoginValidation() throws TestException {

    try {
      Log.i(TAG, "------It is testLoginValidation()-----------");

      activityName = soloLoginValid.getCurrentActivity().getClass().getSimpleName();

      if (activityName.equalsIgnoreCase("MainActivity")) {
        Log.i(TAG, "------It is MainActivity-----------" + activityName);
        soloLoginValid.waitForActivity("HomeActivity", 2000);

        for (int i = 0; i < 40; i++) {
          activityName = soloLoginValid.getCurrentActivity().getClass().getSimpleName();
          if (activityName.equalsIgnoreCase("HomeActivity")) {

            Log.i(TAG, "------for()-- loop-----");
            break;
          }

          soloLoginValid.waitForActivity("HomeActivity", 2000);
        }

      } else {
        Log.i(TAG, "------ testLoginValidation failed-----------");
        throw new TestException(
            "Current Activity Failed----"
                + soloLoginValid.getCurrentActivity().getClass().getSimpleName()
                + "failed");
      }

      if (activityName.equalsIgnoreCase("HomeActivity")) {
        Log.i(TAG, "------HomeActivity-----------");
        System.out.println(" Activity name ---->" + soloLoginValid.getCurrentActivity());
        ArrayList<View> al = soloLoginValid.getViews();
        Iterator<View> it = al.iterator();
        while (it.hasNext()) {
          String viewName = it.next().getClass().getSimpleName();
          if (viewName.equalsIgnoreCase("ImageView")) {
            Log.i(TAG, "------ImageView found-----------");
            break;
          }
          continue;
        }

      } else {
        Log.i(TAG, "------HomeActivity not  found-----------");
        throw new TestException(
            TAG + soloLoginValid.getCurrentActivity().getClass().getSimpleName() + "failed");
      }
      // click on Loginbutton
      soloLoginValid.waitForActivity("MainActivity", 5000);
      // get the login button view with id i.e home_login_btn
      ImageView loginButton = (ImageView) soloLoginValid.getView(R.id.home_login_btn);
      // click on login button with view id
      soloLoginValid.clickOnView(loginButton);
      // control waits for 2 seconds to activate the screen
      soloLoginValid.waitForActivity("SplashActivity", 2000);
      // clears the text at first Editfield
      EditText emailField = (EditText) soloLoginValid.getView(R.id.txt_email);
      soloLoginValid.clearEditText(emailField);
      // it will type the text at first field which i gave in method
      soloLoginValid.enterText(emailField, "android@");
      // clear the text at second Editfield
      EditText passwordField = (EditText) soloLoginValid.getView(R.id.txt_password);
      soloLoginValid.clearEditText(passwordField);
      // finding the password field view
      // click the password field based on EditText view object
      soloLoginValid.clickOnView(passwordField);
      soloLoginValid.waitForActivity("MainActivity", 1000);
      soloLoginValid.enterText(passwordField, "*****");
      soloLoginValid.waitForActivity("MainActivity", 1000);
      // click on Login button
      ImageView clickLogin = (ImageView) soloLoginValid.getView(R.id.login_btn);
      soloLoginValid.clickOnView(clickLogin);
      // soloSplash.clickOnImageButton(1);
      soloLoginValid.waitForActivity("LoginActivity");
      soloLoginValid.clickOnView(emailField);
      soloLoginValid.waitForActivity("LoginActivity", 1000);
      boolean valid = soloLoginValid.searchText("Invalid Email address!");
      if (valid) {
        assertTrue("Invalid Email address!", valid);
      } else {
        throw new TestException("Testcase failed");
      }
      soloLoginValid.waitForActivity("LoginActivity", 1000);
      // Get the view location of cancel button.
      clickCancel = (ImageView) soloLoginValid.getView(R.id.cancel_btn);
      soloLoginValid.waitForActivity("MainActivity", 1000);
      // click on cancel button
      soloLoginValid.clickOnView(clickCancel);
      soloLoginValid.waitForActivity("LoginActivity", 1000);

    } catch (TestException e) {
      e.printStackTrace();
    }
  }