{"id":16689233,"url":"https://github.com/sskorol/selenium-camp-18","last_synced_at":"2026-04-12T14:40:36.480Z","repository":{"id":86918468,"uuid":"123403730","full_name":"sskorol/selenium-camp-18","owner":"sskorol","description":"Source code for Selenium Camp 18 talk: https://seleniumcamp.com/talk/the-essential-tools-for-test-code-quality-improvement","archived":false,"fork":false,"pushed_at":"2019-06-25T12:35:41.000Z","size":88,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-20T14:30:54.242Z","etag":null,"topics":["allure","checkstyle","docker","findbugs","gradle","java","jenkins","jenkins-pipeline","pmd","selenium-camp","selenoid","sonar","sonarqube"],"latest_commit_sha":null,"homepage":"https://seleniumcamp.com/talk/the-essential-tools-for-test-code-quality-improvement","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sskorol.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-01T08:15:15.000Z","updated_at":"2019-07-02T14:47:29.000Z","dependencies_parsed_at":"2023-03-13T19:49:14.409Z","dependency_job_id":null,"html_url":"https://github.com/sskorol/selenium-camp-18","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sskorol%2Fselenium-camp-18","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sskorol%2Fselenium-camp-18/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sskorol%2Fselenium-camp-18/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sskorol%2Fselenium-camp-18/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sskorol","download_url":"https://codeload.github.com/sskorol/selenium-camp-18/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243462092,"owners_count":20294873,"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":["allure","checkstyle","docker","findbugs","gradle","java","jenkins","jenkins-pipeline","pmd","selenium-camp","selenoid","sonar","sonarqube"],"created_at":"2024-10-12T15:47:36.795Z","updated_at":"2025-12-28T15:03:59.432Z","avatar_url":"https://github.com/sskorol.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"![selenium camp logo](http://seleniumcamp.com/wp-content/themes/selenium/images/logo-color.svg \"Selenium Camp 2018\")\n# Selenium Camp 2018 - The essential tools for test code quality improvement \n\nThis project provides [talk's](https://seleniumcamp.com/talk/the-essential-tools-for-test-code-quality-improvement) demos' implementation.\n\n## Branches\n\nThere're several branches, which may help following the main idea of the talk:\n1. **step1/full-rft**: contains lots of different violiations, which could be easily detected by [gradle-quality-plugin](https://github.com/xvik/gradle-quality-plugin). Use the following command to run all checks against **main** and **test** folders:\n```\n./gradlew clean checkQualityMain checkQualityTest\n```\n2. **step2/sonar-support**: gradle-quality-plugin was replaced with [sonarqube](https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Gradle). Only `AttachmentUtils.class` violations left to emulate failures on Jenkins. Use the following command to run Sonar checks:\n```\n./gradlew clean sonarqube\n```\nNote that you have to set the following options in `gradle.properties`, which refer to your own Sonar server:\n```\nsystemProp.sonar.host.url=...\nsystemProp.sonar.login=...\n```\n3. **step3/fix-violations**: all issues are fixed in this branch.\n4. **master**: contains just a README.\n\n## Git hooks\n\nAll key branches contain `pre-commit` hook file, which might be automatically installed into hidden **.git/hooks** directory to execute quality checks for each user's commit. Check **gradle/install-git-hooks.gradle** file for details. By default custom `copy` task depends on `build`. However, you can use your own trigger.\n\n## Jenkins\n\n**Jenkinsfile** uses shared library for Allure / quality reports generation. So you have to set it up on Jenkins pointing to [shared-libraries](https://github.com/sskorol/shared-libraries) sources. Or just use direct calls to corresponding plugins in pipeline. If you want to emulate the same scenario as was performed on demo, you have to setup **Bitbucket Team/Project** on Jenkins (with all required webhooks) and refer to your Bitbucker Server project root.\n\n## Docker\n\nFor this demo Jenkins and Docker were installed on the same Windows PC. So pay attention to **docker-compose.yml**, which might be a bit different for your OS. Created **Jenkinsfile** will work with slaves as well. However, if you gonna use remote docker instance, you may want to take a look at [Docker guide for Jenkins](https://jenkins.io/doc/book/pipeline/docker) and tune some pipeline steps.\n\nNote that you have to pull [Selenoid](https://github.com/aerokube/selenoid) containers manually.\nReact AUT Dockerfile for building your own image will be published soon. Stay tuned.\n\n## React application\n\nThere was used the following AUT on demo: [recycled-login-flow](https://github.com/tinavanschelt/recycled-login-flow).\nOriginal verision is not tuned to be used with Docker. Modified sources will be published soon. Stay tuned.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsskorol%2Fselenium-camp-18","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsskorol%2Fselenium-camp-18","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsskorol%2Fselenium-camp-18/lists"}