{"id":17361256,"url":"https://github.com/niqzart/stacking-selenium","last_synced_at":"2026-05-19T02:07:21.189Z","repository":{"id":196282462,"uuid":"695341516","full_name":"niqzart/stacking-selenium","owner":"niqzart","description":"Selenium WebDriver homework project","archived":false,"fork":false,"pushed_at":"2023-09-23T20:24:22.000Z","size":91,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-01T20:25:10.092Z","etag":null,"topics":["java","junit","selenium","webdriver"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/niqzart.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-09-22T22:40:49.000Z","updated_at":"2023-10-05T12:53:18.000Z","dependencies_parsed_at":"2023-09-24T03:31:23.098Z","dependency_job_id":null,"html_url":"https://github.com/niqzart/stacking-selenium","commit_stats":null,"previous_names":["niqzart/stacking-selenium"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqzart%2Fstacking-selenium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqzart%2Fstacking-selenium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqzart%2Fstacking-selenium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/niqzart%2Fstacking-selenium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/niqzart","download_url":"https://codeload.github.com/niqzart/stacking-selenium/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245886878,"owners_count":20688738,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","junit","selenium","webdriver"],"created_at":"2024-10-15T19:32:05.576Z","updated_at":"2026-05-19T02:07:21.153Z","avatar_url":"https://github.com/niqzart.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stacking Selenium\nMy first Selenium WebDriver project, made as a university homework on Software Testing. The goal was to explore [stackoverflow.com](https://stackoverflow.com), find and describe [use-cases](#use-case-diagram), form a [coverage checklist](#coverage-checklist), write out and implement [test scenarios](#test-scenarios-free-form)\n\nImplementation is done with:\n- Java 11\n- JUnit 5.7.1\n- Selenium 4.12.1\n\nTests are done using XPath, so they might not break for a while, but changes to the site itself will cause them to break. Last successful run was performed on September 23rd, 12023 [HE](https://en.wikipedia.org/wiki/Holocene_calendar)\n\n### Use-case diagram\n![](./doc/usecase-diagram.drawio.png)\n\n### Coverage checklist\n- [x] Navigation from the landing page\n- [x] Log in checks:\n  - [x] Partially filled fields produce correct errors\n  - [x] Incorrectly filled fields produce correct errors\n  - [x] Login and password verification works\n  - [x] Upon successful authorization, site switches to a member's view\n- [x] Registration checks:\n  - [x] Partially filled fields produce correct errors\n  - [x] Incorrectly filled fields produce correct errors\n  - [x] Security requirements for the password are enforced\n  - [x] It is impossible to register without entering the captcha\n- [x] Authorization/registration via social networks checks:\n  - [x] The Google button sends to the correct page with the correct return code\n  - [x] The GitHub button sends to the correct page with the correct return code\n  - [x] The Facebook button sends to the correct page with the correct return code\n- [x] Search works:\n    - [x] For regular text sequences\n    - [x] For text sequences with URL-unsafe characters\n    - [x] For tags, forwarding to another page view\n    - [x] For `[]`, which is recognized as text and not a tag\n- [x] Member on the main page can:\n  - [x] Switch between sections\n  - [x] Switch between question tabs\n  - [x] Visit meta.stackoverflow.com from the same account\n  - [x] Go to their profile\n  - [x] Log out (go to logout page)\n- [x] Logout:\n  - [x] Authorized user can log out\n  - [x] Unauthorized user is automatically redirected to the main page\n\n### Test scenarios (free form)\n#### Transitions from the main page header\n- Initial condition: visitor is on the main page\n- In the header, click on:\n  - About, get redirected to `https://stackoverflow.co`\n  - For teams, get redirected to `https://stackoverflow.co/teams/`\n  - Log in, get redirected to `/users/login`\n  - Sign up, get redirected to `/users/signup`\n\n#### Transitions from the main page body\n- Initial condition: visitor is on the main page\n- In the header, click on:\n  - Discover teams, get redirected to `https://stackoverflow.co/teams/`\n  - Search content, get redirected to `/questions`\n  - Join the community, get redirected to `/users/signup`\n\n#### Search\n- Initial condition: visitor is on the main page\n- Scenarios:\n  - Enter a regular string, get redirected to keyword search\n  - Enter a string with special characters, get redirected to keyword search, and the query will be correctly encoded in the URL\n  - Enter a line with a tag (for example, `[kotlin]`), get redirected to `/questions/tags/kotlin`, with indication about singe-tag search, reflected in headings\n  - Enter a line with several tags (for example, `[kotlin] [java]`), get redirected to `/questions/tags/kotlin+java`, with indication about multi-tag search\n  - Enter a line with an empty tag (`[]`), get redirected to search for the keyword `[]`, and the URL will be `%5B%5D`, just like a regular line with special characters\n\n#### Authorization (email)\n- Initial condition: visitor is on the authorization page is open (`/users/login`)\n- Scenarios:\n  - Enter only password, error `Email cannot be empty` is displayed\n  - Enter only email, error `Password cannot be empty` is displayed\n  - Enter an incorrect email (`test`), error `The email is not a valid email address` is displayed\n  - Enter real user's email and a wrong password, error `The email or password is incorrect` is displayed\n  - Enter real user's email and password, authorization is successful\n\n#### Registration (email)\n- Initial condition: visitor is on the registration page is open (`/users/signup`)\n- Scenarios:\n  - Enter only password, error `Email cannot be empty` is displayed\n  - Enter only email, error `Password cannot be empty` is displayed\n  - Enter an incorrect email (`test`), error `The email is not a valid email address` is displayed\n  - Enter a password that does not meet security requirements (`test`), error `make your password stronger` is displayed\n  - Enter correct email and password, error stating that a captcha must be entered is displayed\n  - (Positive scenario was not tested to not create random accounts on stackoverflow)\n\n#### OAuth redirects\n- Initial condition: visitor is on the authorization page (`/users/login`) or the registration page (`/users/signup`)\n- Scenarios:\n  - Click the button from `google`, get redirected to `https://accounts.google.com/*`, and URL contains the address of the requesting site (`stackauth.com`)\n  - Click the button from `github`, get redirected to `https://github.com/*`, and URL contains the address of the requesting site (`stackauth.com`)\n  - Click the button from `facebook`, get redirected to `https://www.facebook.com/*`, and URL contains the address of the requesting site (`stackauth.com`)\n\n#### Moving through site sections for members\n- Initial condition: member is on the main page\n- Scenarios:\n  - Click on `Questions` in the left menu, get redirected to `/questions`\n  - Click on `Tags` in the left menu, get redirected to `/tags`\n  - Click on `Users` in the left menu, get redirected to `/users`\n  - Click on `Companies` in the left menu, get redirected to `/jobs/companies`\n  - Click on `Explore Collectives` in the left menu, get redirected to `/collectives`\n\n#### Navigate through site categories for members\n- Initial condition: member is on the main page\n- Scenarios:\n  - Click on `Interesting` in the central right menu, get redirected to `/?tab=interesting`\n  - Click on `Bountied` in the central right menu, get redirected to `/?tab=bounties`\n  - Click on `Hot` in the central right menu, get redirected to `/?tab=hot`\n  - Click on `Week` in the central right menu, get redirected to `/?tab=week`\n  - Click on `Month` in the central right menu, get redirected to `/?tab=month`\n\n#### Transitions from main page for members\n- Initial condition: member is on the main page\n- Scenarios:\n  - Click on the user icon, get redirected to `/users/{user_id}/{username}`\n  - Click on the rightmost icon, a submenu of communities opens\n\n#### Using the communities submenu\n- Initial condition: member is on the main page and the communities submenu is open\n- Scenarios:\n  - Click on `Meta Stack Overflow`, get redirected to `https://meta.stackoverflow.com/` with the same authorization\n  - Click on `log out`, get redirected to `/users/logout`\n\n#### Logging out as a member\n- Initial condition: member is on the `/users/logout` page\n- Scenario: click the `Log out` button, a log-out happens, get redirected to the main page\n\n#### Logging out as a vistor\n- Scenario: go to the `/users/logout` page without authorization, get redirected to the main page automatically\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniqzart%2Fstacking-selenium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fniqzart%2Fstacking-selenium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fniqzart%2Fstacking-selenium/lists"}