TestCases

xx

LoginTesting.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="GDAP - Login testing" verbose="10">
  <parameter name="gdap.url" value="http://test.xxxxxxxx" />
  <parameter name="editor1.loginid" value="Tester1 - Wellington" />
  <parameter name="editor1.password" value="Passw0rd" />
  <parameter name="invalid.loginid" value="Tester1 - Wellingtom" />
  <parameter name="invalid.password" value="Passw0Rd" />
 
 
 <test name="dependancies">
    <classes>
          <class name="testNG.GDAPCommon">
        </class>
    </classes>
 </test>

  <test name="Login functionality" preserve-order="true">
    <classes>
      <class name="testNG.TC_PageLogin">
      </class>
    </classes>
  </test>
</suite>

xx

TC_PageLogin.java

package testNG;

import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;

public class TC_PageLogin {
    // Test login variations:
    // - invalid credentials
    // - user already logged in
    // - valid login:
    //    - roles based checking of options post login?  we will just use editor for now..

    public TC_PageLogin() {
    }
    
    @Test(description="Tests login functionality")
    public void testLogins() {
        GDAPCommon.report("TC_Login.testLogins: START");
        // Standard application startup
        WebDriver driver = new GDAPCommon().startGDAP();
        PageLogin pageLogin = new PageLogin(driver);
        // Standard application startup ends
        
        // get parameters from XML file
        String loginID = GDAPCommon.getTestNGXMLParameter("editor1.loginid");
        String loginPassword = GDAPCommon.getTestNGXMLParameter("editor1.password");
        String loginIDBad = GDAPCommon.getTestNGXMLParameter("invalid.loginid");
        String loginPasswordBad = GDAPCommon.getTestNGXMLParameter("invalid.password");
        
        GDAPCommon.report("TC_Login.testLogins: Step 1: Performing proof valid login/verify/logout u='" + loginID + "', p='" + loginPassword + "'");
        PageCommon pageCommon = pageLogin.login(loginID, loginPassword);

        pageCommon.assertJobsLinkSelected();    // ? make this a generic 'assertDefault' and pass user type as an enum?
        pageCommon.logout();
        
        GDAPCommon.report("TC_Login.testLogins: Step 2: Performing bad credentials logins");
        pageLogin.loginButFailOnBadCredentials("", "");
        pageLogin.loginButFailOnBadCredentials(loginID, "");
        pageLogin.loginButFailOnBadCredentials("", loginPassword);
        pageLogin.loginButFailOnBadCredentials(loginID, loginPasswordBad);
        pageLogin.loginButFailOnBadCredentials(loginIDBad, loginPassword);
        pageLogin.loginButFailOnBadCredentials("", "");
        pageLogin.loginButFailOnBadCredentials("admin", "admin");
        pageLogin.loginButFailOnBadCredentials("admin", "password");
        pageLogin.loginButFailOnBadCredentials("admin", "Passw0rd");
        pageLogin.loginButFailOnBadCredentials("user", "password");
        
        GDAPCommon.report("TC_Login.testLogins: Step 3: Performing valid login but expect fail with user already logged in");
        GDAPCommon.report("                       Setup by valid login then verify then close browser with user still logged in");
        pageCommon = pageLogin.login(loginID, loginPassword);
        pageCommon.assertJobsLinkSelected();    // ? make this a generic 'assertDefault' and pass user type as an enum? ie editor, reviewer etc
        GDAPCommon.closeGDAP(driver);
        GDAPCommon.report("TC_Login.testLogins: Step 3: Restart browser/application");
        driver = new GDAPCommon().startGDAP();
        pageLogin = new PageLogin(driver);
        GDAPCommon.report("TC_Login.testLogins: Step 3: Login expect fail - user already logged in");
        pageLogin.loginButFailOnExistingSession(loginID, loginPassword);
        
        GDAPCommon.report("TC_Login.testLogins: Step 4: Performing valid login override existing login");
        pageCommon = pageLogin.loginOverExistingSession(loginID, loginPassword);
        pageCommon.assertJobsLinkSelected();
        pageCommon.logout();
        GDAPCommon.report("TC_Login.testLogins: END");
        GDAPCommon.closeGDAP(driver);
    }
}

xx

CreateJob.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="GDAP - Login testing" verbose="10">
  <parameter name="gdap.url" value="http://test.xxxxxxxx" />
  <parameter name="editor1.loginid" value="Tester1 - Wellington" />
  <parameter name="editor1.name" value="Tester1 - Wellington" />
  <parameter name="editor1.password" value="Passw0rd" />
  <parameter name="editor1.office" value="Wellington" />
  <parameter name="newJobPrefix" value="TC_CreateJob" />
 
 <test name="dependancies">
    <classes>
          <class name="testNG.GDAPCommon">
        </class>
    </classes>
 </test>

  <test name="Login functionality" preserve-order="true">
    <classes>
      <class name="testNG.TC_PageJob">
          <methods>
              <include name = "createJob"/>
          </methods>
      </class>
    </classes>
  </test>
</suite>

xx

TC_PageJob.java

package testNG;

import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;

public class TC_PageJob {
    
    public TC_PageJob() {
    }
    
    @Test(description="Editor creates a job")
    public void createJob() {
        GDAPCommon.report("TC_CreateJob.createJob: START");
        
        // get parameters from TestNG XML
        String loginID = GDAPCommon.getTestNGXMLParameter("editor1.loginid");
        String loginName = GDAPCommon.getTestNGXMLParameter("editor1.name");
        String loginPassword = GDAPCommon.getTestNGXMLParameter("editor1.password");
        String loginOffice = GDAPCommon.getTestNGXMLParameter("editor1.office");
        String newJobTitle = GDAPCommon.getTestNGXMLParameter("newJobPrefix");
        
        newJobTitle = GDAPCommon.appendCurrentDateTime(newJobTitle);
        
        // Standard application startup
        WebDriver driver = new GDAPCommon().startGDAP();
        PageLogin pageLogin = new PageLogin(driver);
        PageCommon pageCommon = pageLogin.login(loginID, loginPassword);
        // Standard application startup ends
                
        GDAPCommon.report("Step 1: Verify jobList is default selection");
        pageCommon.assertJobsLinkSelected();
        PageJob_List pageJob_List = new PageJob_List(driver);
        
        GDAPCommon.report("Step 2: Create job (self verifies)");
        pageJob_List.createJobAndVerify(newJobTitle, loginName, loginOffice);

        GDAPCommon.report("Create In Draft Job & Edit Elements");
        
        GDAPCommon.report("TC_CreateJob: END");
        GDAPCommon.closeGDAP(driver);
    }
    
    @Test(description="Editor adds an ItemGroup to current job")
    public void addItemGroupToJob() {
        GDAPCommon.report("TC_CreateJob.addItemGroupToJob: START");
        
        // Do we select a job or depend on a job preselected..
    }

}

xx