This project implements automation of the testing process for the TeamCity server app.
- JDK 17
- IDE (IntelliJ IDEA)
- Gradle 8.3
- TeamCity server running locally on port 8111 (version 2023.05.2, the installer for this version can be found in the main resources)
- TeamCity has a build agent configured running locally (a Win10 machine)
- TeamCity has an admin account with credentials admin/admin
- Docker instance is up and running locally
Tests can be run from the IDE by selecting a test and clicking the Run button or by running the following command: ./gradlew test
.
When the test run is finished a test report will be generated.
The report can be found in /build/reports/tests/test/index.html
.
If a test fails a screenshot will be made. Screenshots can be found in the following directory: /build/reports/tests/
.
- Log in as admin (Automated)
Step | Expected result |
---|---|
Open TeamCity Login page | Login page is opened |
Enter username in Username input | Username is entered |
Enter password in Password input | Password is entered |
Click 'Login' | Projects page is opened, User is logged in |
Verify user permissions | User is admin |
- Create project manually (Automated)
Preconditions:
- admin user is logged in
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened |
Click 'Create New Project' button (top right corner) | Create Project page is opened |
Enter project name in Name input | Project name is entered |
Click 'Create' | Project is created, Edit project page is opened |
Click 'Create build configuration | Create Build page is opened |
Enter build name in Name input | Build name is entered |
Click 'Create' | Edit VCS Root page is opened |
Select 'Git' in 'Type of VCS' dropdown | 'Git' option is selected |
Enter 'VCS root name' | VCS root name is entered |
Enter 'Fetch URL' | Repository url is entered |
Enter 'Default branch' | Default branch is entered |
Click 'Create' | VSC Roots page is opened, VCS root is created |
Select 'Build Steps' in side bar | Edit Build Runner page is opened |
Click '+ Add Build Step' | New Build Step page is opened |
Select 'PowerShell' in the list of runners | New Build Step: PowerShell form is opened |
Enter path to script file in Script File input | File path is entered |
Click 'Create' | Edit Build Runner page is opened, build step created |
Click 'Run' | Build Configuration page is opened, Build Overview is displayed |
Wait for run to complete | Run is executed successfully |
Open Build Log tab | Build Log tab is opened |
Expand and verify step logs | Step logs contain output of the test script from VCS |
- Create New User Account and login as newly created user
Preconditions:
- admin user is logged in
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Administration' in header | Administration page is opened |
Select 'Users' in the side bar | Users list is displayed |
Click 'Create User Account' | Create User page is opened |
Enter username in Username input | Username is entered |
Enter password in Password input | Password is entered |
Enter password in Confirm Password input | Password is entered |
Click 'Create User' | Users list is displayed, created user is present in the list |
Log out | Login page is opened |
Enter username of new user in Username input | Username is entered |
Enter password of new user in Password input | Password is entered |
Click 'Login' | Projects page is opened, User is logged in |
Verify user permissions | User doesn't have admin permissions |
- Create build agent
Preconditions:
- Docker up and running on localhost with a Hyper-V engine, exposed on port 2375, temp dir is configured as allowed for sharing
- Pull agent image: docker pull jetbrains/teamcity-agent
- Start linux container: docker run -e SERVER_URL="" -v :/data/teamcity_agent/conf jetbrains/teamcity-agent
- admin user is logged in
- test project is created
- build is created in test project
- build step is configured to run linux commands (e.g., simple command line runner)
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Agents' in header | Agents Overview page is opened, 1 unauthorised agent is displayed |
Expand Unauthorized list | Newly added agent is listed under Unauthorized category |
Click agent link | Agent Details page is opened |
Click 'Authorize' | Authorize host popup appears |
Click 'Authorize' in Authorize host popup | Agent is displayed as authorized, connected and enabled |
Click 'Administration' | Administration page is opened |
Expand test project in projects list | Created build is displayed |
Click created build link | Edit Build page is opened |
Click 'Agent Requirements' in sidebar | Agent Requirements page is opened |
Click 'Add New Requirement' | Edit Requirement dialog is opened |
Enter parameter | Parameter is entered |
Select condition | Condition is selected |
Enter value | Value is entered |
Click 'Save' | Edit Requirement dialog is closed, requirement is updated |
Click 'Projects' in header | Projects page is opened, test project is displayed |
Expand test project | Created build is displayed |
Click 'Run' | Run is started |
Wait for run to complete and check its result | Run is completed successfully |
Verify build agent used for run | Run was executed on newly added agent |
- Configure build from VCS
Preconditions:
- There is test public Github repository with simple maven project and teamcity build config (settings.kts)
- admin user is logged in
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Create New Project' button (top right corner) | Create Project page is opened |
Select 'From Repository URL' tab | Create From VCS form is displayed |
Enter Github repo URL | Repo URL is entered |
Click 'Proceed' | Create Project From URL form is opened |
Verify VCS settings radio buttons | 'Import settings from .teamcity/settings.kts' is selected |
Enter unique project name | Project name is entered |
Click 'Proceed' | Edit Project page is opened, build configurations are displayed |
Open build configuration | Edit Build page is opened |
Click 'Run' | Build Configuration page is opened, Build Overview is displayed |
Wait for run to complete | Run is executed successfully |
Open Build Log tab | Build Log tab is opened |
Expand and verify step logs | Step logs contain output of the test script from VCS |
- Configure VCS triggers
Preconditions:
- admin user is logged in
- test project is created
- build is configured in test project
- build step is configured
- VCS is configured
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Administration' | Administration page is opened |
Expand test project in projects list | Created build is displayed |
Click build configuration link | Edit Build page is opened |
Select 'Version Control Settings' in sidebar | Version Control Settings page is opened |
Verify that VCS was polled at least once | Date of latest check for changes is displayed |
Select 'Triggers' in sidebar | Edit Triggers page is opened |
Click 'Add New Trigger' | Add Trigger dialog is opened |
Select 'VCS Trigger' | VCS Trigger is selected |
Click 'Save' | Trigger is saved and listed on Edit Triggers page |
Click 'Projects' | Projects page is opened |
Expand created project | Created build is displayed |
Commit changes in configured VCS repo | Changes are committed |
Wait for run to start and complete | Run is executed successfully |
- Publish artifacts
- admin user is logged in
- project with build configuration and build step is configured, VCS is configured
- there is project in Github with code producing relevant files (e.g., a building jar)
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Administration' | Administration page is opened |
Expand test project in projects list | Created build is displayed |
Click build configuration link | Edit Build page is opened |
Enter path to produced file in Artifacts Path input | Path is entered |
Click 'Save' | Changes are saved |
Click 'Run' | Build Configuration page is opened, Build Overview is displayed |
Wait for run to complete | Run is executed successfully |
Open Artifacts tab | Artifacts tab is opened, configured artifact is listed |
Click 'Download all' | Zip archive is downloaded, archive contains configured artifact |
- Configure dependencies
Preconditions:
- admin user is logged in
- project is configured in TeamCity with at least 2 build configurations, 1st produces artifacts
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Administration' | Administration page is opened |
Expand test project in projects list | 2 build configurations are displayed |
Click 2d build configuration | Edit Build page is opened |
Click 'Dependencies' in sidebar | Edit Dependencies page is opened |
Click 'Add new snapshot dependency' | Add Snapshot Dependency dialog is opened |
Select 1st build configuration of test project in dependency selector | Build configuration is selected |
Click 'Save' | Snapshot dependency is created and listed on Edit Dependencies page |
Click 'Add new artifact dependency' | Add Artifact Dependency dialog is opened |
Select 1st build configuration in Depend On dropdown | Build configuration is selected |
Enter rule for copying in Artifacts Rules input | Rule is entered |
Click 'Save' | Artifact dependency is created and listed on Edit Dependencies page |
Click 'Run' | Build Configuration page is opened, Build Overview is displayed |
Wait for run to complete | Run is executed successfully |
Open Dependencies tab | Dependencies tab is opened |
Select 'Snapshot Dependencies' tab > 'List' tab | Successful run of 1st build configuration is listed |
Select 'Downloaded Artifacts' tab | Successful run of 1st build configuration is listed, Downloaded Artifacts dropdown is displayed |
Expand 'Downloaded Artifacts' dropdown | Artifact from 1st build is available |
Click expanded artifact | Zip archive is downloaded, archive contains artifact |
- Configure deployment
Preconditions:
- admin user is logged in
- there is Github repo with test docker file
- project is configured in TeamCity with configured VCS and 1 build configuration building a docker image
- there is test dockerhub account
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Administration' | Administration page is opened |
Click test project in projects list | Edit project page is opened |
Click 'Connections' in sidebar | Connections form is opened |
Click 'Add Connection' | Add Connection dialog is opened |
Select 'Docker Registry' as Connection Type | Docker Registry is selected |
Enter username | Username is entered |
Enter password | Password is entered |
Click 'Save' | Add Connection dialog is closed, connection is created |
Click 'General Settings' in sidebar | General Settings form is opened |
Click 'Create build configuration' | Create Build page is opened |
Enter build name in Name input | Build name is entered |
Click 'Show advanced options' | Build configuration type option is displayed |
Expand 'Build configuration type' > Select 'Deployment' | Deployment type is selected |
Click 'Create' | Edit Build page is opened |
Select 'Build Steps' in side bar | Edit Build Runner page is opened |
Click '+ Add Build Step' | New Build Step page is opened |
Select 'Command Line' | New Build Step: Command Line form is opened |
Enter name in Step name input | Step name is entered |
Enter docker push command in Custom script input | Command is entered |
Click 'Save' | Edit Build Runner page is opened, build step is created |
Click 'Build Features' in sidebar | Edit Build Features page is opened |
Click 'Add Build Feature' | Add Build Feature dialog is opened |
Select 'Docker Support' build feature | Docker Support is selected |
Click 'Add Registry Connection' | Add Registry Connection dialog is opened |
Select created docker connection | Docker connection is selected |
Click 'Add' | Add Registry Connection dialog is closed, docker connection is added |
Click 'Save' | Add Registry Connection dialog is closed, docker support feature is created |
Click 'Dependencies' in sidebar | Edit Dependencies page is opened |
Click 'Add new snapshot dependency' | Add Snapshot Dependency dialog is opened |
Select 1st build configuration of test project in dependency selector | Build configuration is selected |
Click 'Save' | Snapshot dependency is created and listed on Edit Dependencies page |
Click 'Projects' in header | Projects page is opened, test project is displayed |
Expand test project | Created build is displayed |
Click regular build configuration link | Build configuration page is opened |
Click 'Run' | Run is started |
Wait for run to complete | Run is executed successfully |
Click build run | Build Configuration page is opened, Build Overview is displayed |
Expand 'Deployments' | Deployment build is listed |
Click 'Deploy' | Run is started |
Wait for run to complete | Run is executed successfully |
Verify deployment | Image is available in Dockerhub |
- Viewing test results
Preconditions:
- admin user is logged in
- there is Github repo with test projects with unit tests (one test failing)
- project is configured in TeamCity with configured VCS
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Expand test project | Created build is displayed |
Click build link | Build configuration page is opened |
Click 'Run' | Run is started |
Wait for run to complete | Run completed with failed tests |
Click build run | Build Configuration page is opened, Build Overview is displayed |
Open Tests tab | Tests tab is opened |
Verify test list | All tests are listed, results are displayed (all successful and 1 failed) |
Click failed test | Test details are expanded, stacktrace is displayed |
Click 'Open Build Log' | Build Log popup is opened, build logs are displayed with summary of test results |
- Configuring SSO authentication modules
Preconditions:
- admin user is logged in
- there is test account on Github, TeamCity app is registered on Github
Step | Expected result |
---|---|
Open TeamCity Projects page | Projects page is opened, test project is displayed |
Click 'Administration' | Administration page is opened |
Click root project | Edit project page is opened |
Click 'Connections' in sidebar | Connections form is displayed |
Click 'Add Connection' | Add Connection dialog is opened |
Enter Github client ID | Client ID is entered |
Enter Github client secret | Client secret is added |
Click 'Save' | Add Connection dialog closed, connection is created |
Click 'Administration' | Administration page is opened |
Click 'Authentication' in sidebar | Authentication form is displayed |
Click 'Add Module' | Add Module dialog is opened |
Select 'Github.com' in New Module dropdown | Github.com option is selected |
Verify Allow creating new users on the first login checkbox is checked | Allow creating new users on the first login checkbox is checked |
Click 'Add' | Add Module dialog is closed, new SSO module is created |
Log out | Login page is opened |
Click Github icon | Github Authorization page is opened |
Click 'Authorise user' | Projects page is opened, User is logged in with Github account |
Verify user permissions | User doesn't have admin permissions |
Log out | Login page is opened |
Log in as Admin | Projects page is opened |
Click 'Administration' | Administration page is opened |
Click 'Users' in sidebar | Users form is opened |
Verify list of users | New user is created with info from Github account, user is not an admin |