{"id":21457794,"url":"https://github.com/levvolkov/espresso","last_synced_at":"2025-03-17T04:10:49.002Z","repository":{"id":262528462,"uuid":"873063190","full_name":"levvolkov/Espresso","owner":"levvolkov","description":"2.5 «Espresso. Автоматизация тестирования Android»","archived":false,"fork":false,"pushed_at":"2024-11-12T22:20:04.000Z","size":134,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T13:33:12.223Z","etag":null,"topics":["allure-report","android-testing","android-testing-espresso","espresso","espresso-test","gradle","mobile-test-automation","mobile-testing","test-results"],"latest_commit_sha":null,"homepage":"","language":"HTML","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/levvolkov.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-15T14:38:09.000Z","updated_at":"2024-11-12T22:20:07.000Z","dependencies_parsed_at":"2024-11-12T23:23:25.694Z","dependency_job_id":"e2db09fd-c4f2-40a2-bd27-e819af431544","html_url":"https://github.com/levvolkov/Espresso","commit_stats":null,"previous_names":["levvolkov/espresso"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2FEspresso","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2FEspresso/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2FEspresso/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/levvolkov%2FEspresso/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/levvolkov","download_url":"https://codeload.github.com/levvolkov/Espresso/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243971193,"owners_count":20376784,"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-report","android-testing","android-testing-espresso","espresso","espresso-test","gradle","mobile-test-automation","mobile-testing","test-results"],"created_at":"2024-11-23T06:07:07.096Z","updated_at":"2025-03-17T04:10:48.984Z","avatar_url":"https://github.com/levvolkov.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Домашнее задание к занятию «2.5. Espresso»\n\n---\n\n## Сделано:\n\n### Задание. Реализация теста на проверку главного экрана\n\n1. Склонирован и запущен [тестовый проект](https://github.com/netology-code/mqa-homeworks/tree/main/2.5%20Espresso/simpleAppForEspresso) в Android Studio.\n\n2. Добавлены необходимые зависимости в файл `/app/build.gradle` в блок `dependencies {`:\n```java\n   testImplementation 'junit:junit:4.13.2' \n   androidTestImplementation 'androidx.test.ext:junit:1.1.3' \n   androidTestImplementation 'androidx.test:rules:1.4.0'\n   androidTestImplementation 'androidx.test:runner:1.4.0' \n   androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' \n```\n\n3. При возникновении проблем с запуском приложения был разрешен конфликт в структуре проекта (Project Structure) путем обновления следующих версий. Обновления были необходимы для обеспечения совместимости и стабильной работы приложения:\n```java\n   Android Gradle Plugin Version 7.4.2\n   Gradle Version 7.5\n```\n\n4. Создан новый класс в директории `/app/src/androidTest/java/ru/kkuzmichev/simpleappforespresso/`.\n\n5. Добавлено аннотирование `@RunWith` над именем класса для указания на использование AndroidJUnit в тестах.\n```java\n   @RunWith(AndroidJUnit4.class)\n   public class ...\n```\n7. Задано правило `MainActivity` внутри класса. Вместо `ActivityTestRule` использован `ActivityScenarioRule`, чтобы облегчить управление состоянием активности и улучшить совместимость с новыми версиями Android. Это также позволяет более эффективно тестировать жизненный цикл активности.\n```java\n   @Rule\n   public ActivityScenarioRule\u003cMainActivity\u003e activityRule =\n           new ActivityScenarioRule\u003c\u003e(MainActivity.class);\n```\n\n7. Для написания теста было запущено приложение, после чего проведен анализ иерархии элементов с помощью [Layout Inspector](https://developer.android.com/studio/debug/layout-inspector), в результате которого был обнаружен элемент с текстом `This is home fragment` и его `ID`.\n  \n8. Написан тест, проверяющий, что у найденного `ID` текст `This is home fragment`.\n  * Вынесен текст кода в отдельную переменную, что улучшит читаемость кода и облегчит его поддержку. Если нужно будет изменить текст в будущем, это можно сделать это в одном месте, а не искать его по всему коду. \n```java\n   private static final String homeFragmentText = \"This is home fragment\";\n```\n\u003e Использование `private static final String` обеспечит неизменяемость значения, что повысит безопасность кода и уменьшит вероятность ошибок, связанных с изменением текста в разных местах.\n\n9. Во время попытки запуска теста через консоль в режиме сборщика Gradle была успешно решена проблема с правами доступа к файлу gradlew путем выполнения команды:\n```\n   chmod +x ./gradlew\n``` \n\n10. Запущен тест в режиме сборщика Gradle, проверено его успешное завершение.\n```\n   ./gradlew connectedAndroidTest\n```\n\n11. Запущен тест, нажав кнопку запуска возле метода теста, произведен экспорт отчета теста в [HTML-файл](https://github.com/levvolkov/Espresso/blob/main/Test%20Results%20-%20HomeFragmentTest.html), отчёт добавлен в [issues](https://github.com/levvolkov/Espresso/issues/1) репозитория.\n\n12. Для покрытия большинства потребностей добавлен [Allure Report](https://allurereport.org/docs/)\n  * Установлен [Allure на ПК](https://allurereport.org/docs/install/) для требований системы отчетов.\n```\n   brew install allure\n```\n```\n   allure --version\n```\n  * Добавлена необходимая Allure зависимость в файл `/app/build.gradle` в блок `dependencies {`:\n```java\n   androidTestImplementation 'io.qameta.allure:allure-kotlin-android:2.4.0'\n```\n  * В тесте в аннотирование `@RunWith(AndroidJUnit4.class)` над именем класса добавленно `Allure` и сделан импорт:\n```java\n   @RunWith(AllureAndroidJUnit4.class)\n```\n  * Запущен тест `▶️` проверено его успешное завершение.\n  * В **Android Studio** в разделе **Device Explorer** по пути `data/data/имя_проекта/files` найдена и выгружена в проект папка `allure-results` с генерируемым отчетом.\n  * Для запуска отчета в консоли выполнена команда:\n```\n   allure serve\n```\n  * Скриншот отчёта добавлен в [issues](https://github.com/levvolkov/Espresso/issues/2) репозитория.\n\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevvolkov%2Fespresso","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flevvolkov%2Fespresso","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flevvolkov%2Fespresso/lists"}