Challenge Overview

Challenge Objectives

  • Produce Selenium UI automation test cases for the React.js Verse calendar UI form
  • Achieve at least the same level of test coverage as the existing Selenium UI automation test cases for the legacy Verse calendar UI form.
  • You can re-use existing Selenium utilities, selectors, and tasks

Project Background

  • The Verse calendar form UI has been re-implemented using React.js and the existing Selenium UI test cases are not designed for the new React.js Verse calendar UI form. In this challenge you need to use the existing Selenium UI test utilities and test plans as a good guide for implementing the new Selenium test cases for the React.js Verse calendar UI form.

Technology Stack

  • Java is used as the main language for Verse UI automation
  • Selenium WebDriver is the main browser binding used for Verse UI automation
  • Eclipse is the supported IDE
  • Automation Test Cases run locally on Chrome for validation

Code access

You can access the existing automation code from the GitHub repo provided in the forum and also the ragnar link to get access. 
  • /src - Code Base
  • /doc - Automation code deployment guide
All the dependencies that are not installtion via the pom file to build the code are also attached in the forum. You have to locally install the dependencies before trying to build the code. Installing the dependencies via the pom file won't work. 

We will provide a set of test user properties files to each developer. These users are used to login to the provided test URL The general documentation provides details on how to load the code into the development environment and details on where to place the test user properties files. Carefully read the deployment guide when build the code.

Requirements

  • There are 5 Calendar Test Cases that need to be written. Developers can use Mac or Windows. We require Chrome to run the automation locally and we require FireFox to be able to parse/read the automation log files.
  • Need to maintain the coding standards and maintainability. Follow the best practises mentioned on the automation document provided in the forum. Check
    • /Automation_Doc/automation/fvt-bestpractices-testcases.html
    • /Automation_Doc/automation/fvt-bestpractices-appobjects.html
    • /Automation_Doc/automation/fvt-bestpractices-tasks.html
  • Browse through the FVT project - check out what classes and methods already exist! Do not duplicate!

For the Calendar Test Cases, you will be able to make use of the existing...
  • Calendar AppObjects in sequoia-fvt\src\main\java\appobjects\sequoia\calendar\reactform
  • Calendar Tasks in sequoia-fvt\src\main\java\tasks\sequoia\calendar\reactform
  • Generic actions in com.ibm.test.sequoia.SequoiaTestCase
Good examples of existing Calendar automation test cases are:
  • com.ibm.test.sequoia.calendarinbox.CalendarInboxBasic
  • com.ibm.test.sequoia.calendar.reactform.AttendeeList
The new test cases should all extend com.ibm.test.sequoia.calendar.reactform.ReactFormTestCase. ReactFormTestCase adds the requirement for the 'react-event-form' hasCondition that your test case will need.

The five test cases that we need created are

com.ibm.test.sequoia.calendar.reactform.InvitationBody
This test case will test the content that is allowed in the body of a meeting.


User Set: Requires ONLY a DEFAULT user set to be in the users directory

1. Login to Verse as a user (user will be the chair of a meeting)
2. While viewing you mail Inbox, click in a blank time slot in calendar bar to bring up the new event panel
3. Input an attendee in FYI field and input text in the description
4. Make the following changes to the description text using the editor's toolbar actions: 
  • Change the text font to Georgia. 
  • Change the text size to 36. 
  • Make the text bold. 
  • Make the text italic. 
  • Add an underline for the text.
  • Change the text color as red. 
  • Change the text background color as blue. 
  • Make the text align to center and Verify the changes were made.
5. Insert 5 by 3 table using the editor's 'Table' toolbar action and Verify the table was added
6. With focus in the table, click on Table/Row/Insert row before and Verify the change was made.
7. With focus in the table, click on Table/Column/Delete column and Verify the change was made.
8. Input some text into table and Verify the changes were made.
9. Insert a link to http://www.hcl.com using the editor's 'link' toolbar action and Verify the link was added.
10. Insert the following .png image by using the editor's 'Insert/edit image' toolbar action and Verify the image was added: /grte-resources/data/attachments/images/ObjectGraph.PNG
11. Attach the following 2 files using the editor's 'Attach files' toolbar action and verify the files were attached:
  • /grte-resources/data/attachments/images/IBMVerseBanner.jpg, txt 
  • /grte-resources/data/attachments/fvt/TestAttach1.txt
12. Send to attendee by clicking 'Save and Send'
13. Check the meeting entry has been created on calendar bar
14. Logout the meeting chair
15. Login to Verse as the attendee, Go to Calendar Inbox by clicking on 'Calendar in the top navigation bar.
16. Check that the invitation appears in the Calendar Inbox message list.
17. Verify that the text styles, table, link and attachment in the invitation are correct 
18. Verify the meeting entry appears in the Calendar grid view
19. As the attendee, delete the meeting
20. Logout the attendee
21. Login to Verse as chair and delete the meeting

com.ibm.test.sequoia.calendar.reactform.FindAvailableTime
This test case will test the Find Available Times feature.


User Set: Requires ONLY a DEFAULT user set to be in the users directory

1. Login to Verse as a user (user will be the chair of a meeting)
2. While viewing you mail Inbox, click in a blank time slot in calendar bar to bring up the new event panel
3. Click on the 'Find the available start times' icon and verify the meeting time slot is available
4. Click a different time slot.
5. Input attendee in required field
6. Input text in the subject
7. Send to attendee by clicking 'Save and Send'
8. Go to Calendar Inbox by clicking on 'Calendar in the top navigation bar.
9. Find the meeting in the Calendar grid view
10. Click the 'New' action to create a new meeting. 
11. Click on the 'Find the available start times' icon and verify the previously created meeting time slot is not listed.
12. Delete the meeting

com.ibm.test.sequoia.calendar.reactform.delegation.FindAvailableTime
Delegation in Verse means a user can allow another user access to his/her mail or calendar. This test case is a delegation test case where the Administrative Assistant (AA) has access to the Executive's Calendar. It will test the Find Available Times feature. 


A good example of a delegation test case can be found here: com.ibm.test.sequoia.mail.delegation.mail.unread.FilterUnreadBasicFullAccessAA
The test will require the 'cal-inbox-delegation' hasCondition as FilterUnreadBasicFullAccessAA does in getRequiredVerseHasConditions() and should perform similar checks that are in isSupported().


User Set: Requires ONLY a Delegation User Set to be in the users directory
User Set detail: 
   AA=the 4th user in the user set
   Executive=1st user in the user set

1. Login as AA (administrative assistant) in Verse
2. Open the Executive's Calendar Inbox page
3. Click the 'New' action to create a new meeting. 
4. Click on the 'Find the available start times' icon 
5. Make sure the 9:00AM time slot for tomorrow is listed in the available times
6. Choose the 9:00AM time slot for tomorrow in the available times
7. Click 'Save and Send'
8. Click the 'New' action to create a new meeting. 
9. Make sure the 9:00AM time slot for tomorrow is NOT listed in the available times
10. Delete the created meeting

com.ibm.test.sequoia.calendar.reactform.InviteeStatus
This test case will test that the invitee status of an attendee when the attendee accepts, declines, and tentative accepts meeting invitations.


User Set: Requires ONLY a DEFAULT user set to be in the users directory

1. Login to Verse as a user (user will be the chair of a meeting)
2. Go to Calendar Inbox by clicking on 'Calendar in the top navigation bar.
3. Click on the 'New' action to create a new meeting. Add one attendee to the Required field. Click Save and Send.
4. Click on the 'New' action to create a new meeting. Add one attendee (same attendee as in step 3) to the Required field. Click Save and Send.
5. Click on the 'New' action to create a new meeting. 
    Add one attendee (same attendee as in step 3) to the Required field.
    Click on the 'Make this even repeat' icon.
    Click Save and Send
6. Logout the chair and Login as the attendee.
7. Open the first single meeting invitation and click on Decline
8. Open the 2nd single meeting invitation and click on Tentative
9. Go to Calendar Inbox by clicking on 'Calendar in the top navigation bar.
10. Open the repeat meeting invitation and click on Accept
11. Logout the attendee and Login as the chair
12. Find the 3 responses in the mail Inbox message list and make sure the subjects contain Accepted, Declined, and Tentative.
13. Go to Calendar Inbox by clicking on 'Calendar in the top navigation bar.
14. Open the first single meeting from the grid view. Expand the attendee response section and verify the attendee is listed as Declined.
15. Open the second single meeting from the grid view. Expand the attendee response section and verify the attendee is listed as Tentative.
16. Open the repeat  meeting from the grid view. Expand the attendee response section and verify the attendee is listed as Accepted.
17. Delete all 3 meetings
18. Logout the chair and Login as the attendee.
19. Delete all 3 meetings

com.ibm.test.sequoia.calendar.reactform.SaveSendInvitation
This test case tests sending and receiving a single meeting and a repeating meeting.


User Set: Requires ONLY a DEFAULT user set to be in the users directory

1. Login to Verse as a user (user will be the chair of a meeting)
2. While viewing you mail Inbox, click in a blank time slot in calendar bar to bring up the new event panel
3. Input the following fields: Subject, Location and Description
4. Click the 'Make this event repeat' icon and choose to repeat the meeting Daily, 3 times.
5. Click on 'Save as Draft'
6. Check the meeting entry has been created on calendar bar
7. Go to Calendar Inbox by clicking on 'Calendar in the top navigation bar..
8. Find the meeting entries in grid view and open the 3rd entry
9. Add attendee to Optional and click on 'Save and Send'
10. Click on the 'New' action to create a new meeting.
11. Input the following fields: Subject, FYI, Location and Description. (do not make the meeting repeat)
12. Click on 'Save and Send'
13. Logout the chair and Login as the attendee.
14. Verify that the single and repeat invitations are in the Mail Inbox.
15. Open the single meeting and verify that all information is correct
16. Open the repeating meeting and verify that all information is correct 
17. Verify that the repeating meeting has 3 instances in the calendar bar.
18. Delete the 2 meetings
19. Logout the attendee and Login as the chair
20. Delete the 2 meetings 
 

Local Testing


All the BVT test cases require the react-event-form hasCondition to be enabled. When testing manually, the user will need to enable the hasCondition. This can be done in one of two ways: load the page using: https://wonka-01.cwp.pnp-hcl.com/verse?react-event-form=1

load the page using: https://wonka-01.cwp.pnp-hcl.com/verse and open the Mail and Calendar settings and enable the ' New Calendar Event Form' in the feature preview section.

The enablement should not be part of the BVT test case steps. When you run the BVT test case code locally, the framework will add react-event-form=1 to the default URL loaded into the browser.

Try enabling the react-event-form hasCondition and then reproduce the steps. You should see a different user experience.

Judging Criteria

  • Implement the 5 Test cases for the New React.js Verse calendar UI form
  • Achieve at least the same level of test coverage as the existing Selenium UI automation test cases for the legacy Verse calendar UI form.
  • Need to maintain the coding standards and maintainability. Follow the best practises mentioned on the automation document provided in the forum. Check
    • /Automation_Doc/automation/fvt-bestpractices-testcases.html
    • /Automation_Doc/automation/fvt-bestpractices-appobjects.html
    • /Automation_Doc/automation/fvt-bestpractices-tasks.html
  • Browse through the FVT project - check out what classes and methods already exist! Do not duplicate!
  • Video evidance of your test case execution
  • Deployment Guide


Final Submission Guidelines

  • Submit a zip file containing your solution and read me about deployment steps for the reviewers
  • Record a video how your 5 test cases are performing (This is for verification)
  • Winner of this competition will need to update the code to the GitHub repo.
  • Winner needs to deploy and run the automation test cases in the client's environment

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30073787