Тест-кейсы: задачи¶
Источник: документация проекта мобильных автотестов, модуль
tests/test_tasks.py.
Актуализировано: 2026-08-13. Описаны 32 тестовые функции и 33 UI-варианта с учётом параметризации PDF viewer.
Основание: автотесты tests/test_tasks.py, текущая документация покрытия в docs/.
Покрываемая область:
TC-3-001Создание задачи и проверка уведомленияTC-3-002Редактирование задачи и проверка корректности данныхTC-3-003Поиск задачи по уникальному названиюTC-3-004Добавление комментария к задачеTC-3-005Редактирование комментария к задачеTC-3-006Удаление комментария у задачиTC-3-007Попытка создать задачу без обязательного названияTC-3-008Попытка сохранить пустой комментарийTC-3-009Удаление задачиTC-3-010Пользователь 1 не может управлять комментарием пользователя 2TC-3-011Пользователь 2 не может управлять комментарием пользователя 1TC-3-012Загрузка и удаление PDF-документа в задачеTC-3-013Открытие PDF-документа в задачеTC-3-014Открытие изображения в задачеTC-3-015Скачивание XLSX-документа из задачиTC-3-016Отмена выбора документа в задачеTC-3-017Отмена и скачивание XLSX-документа через меню задачиTC-3-018Удаление одного документа задачи сохраняет остальныеTC-3-019Задача отображается в назначенную дату календаряTC-3-020Многодневная задача отображается на всём диапазоне календаряTC-3-021Перенос дат перемещает задачу в календареTC-3-022Удалённая задача исчезает из календаряTC-3-023Фильтр по тегу изменяет список задач календаряTC-3-024UTC-дата около полуночи учитывает часовой пояс устройстваTC-3-025Offline-refresh сохраняет список и получает новые данные после восстановления сетиTC-3-026Завершение задачи и возврат в активныеTC-3-027Строгая сортировка задач по дате созданияTC-3-028Фильтрация задач по ответственному и участникуTC-3-029Создание задачи из карточки сделки с сохранением связиTC-3-030Запрет изменения и удаления задачи пользователем без правTC-3-031Ошибка скачивания документа при обрыве сети и успешный повторTC-3-032Сохранение черновика задачи после background/foreground
Общие предусловия:
- Установлено и запущено мобильное приложение или подготовлен мобильный тестовый стенд.
- Тестовые пользователи, роли и данные подготовлены согласно предусловиям конкретного кейса.
- Сценарий выполняется на актуальной сборке приложения и доступном тестовом сервере.
| № | Название | Предусловия | Запрос / шаги | Ожидаемый результат |
|---|---|---|---|---|
| TC-3-001 | Создание задачи и проверка уведомления | Автотест: test_create_task.Маркер: smoke.- Установлено и запущено мобильное приложение. - Доступна учетная запись test_mobile_user_1.- Доступен экземпляр процесса из TASK_UI_PROCESS_TITLE.- Доступны пользователи test_mobile_user_1 и test_mobile_user_2.Тестовые данные: - Название задачи: Название тестовой задачи <uuid>- Описание: Суть тестовой задачи: '<название задачи>'- Ответственный: test_mobile_user_1- Участник по умолчанию: test_mobile_user_2- Экземпляр процесса: значение TASK_UI_PROCESS_TITLE |
1. Авторизоваться как test_mobile_user_1 и через нижнее меню открыть раздел задач.2. Нажать кнопку добавления задачи. 3. Заполнить название, описание и ответственного. 4. Выбрать участника, дату окончания и процесс. 5. Создать задачу. 6. Открыть раздел уведомлений по задачам. |
1. Отображается экран задач. 2. Отображается форма с полями задачи. 3. Данные введены в форму. 4. Дополнительные параметры установлены, задача привязана к нужному процессу. 5. Форма создания закрывается после отправки. 6. В уведомлениях ответственного отображается уникальное название созданной задачи. |
| TC-3-002 | Редактирование задачи и проверка корректности данных | Автотест: test_edit_task.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру created_task создана задача Название тестовой задачи <uuid>.Тестовые данные: - Новое название: <исходное название> (edit)- Новое описание: <исходное описание> (edit) |
1. Открыть раздел задач и найти созданную задачу. 2. Открыть меню созданной задачи. 3. Выбрать редактирование. 4. Изменить название и описание задачи. 5. Сохранить изменения. 6. Открыть задачу и проверить данные. |
1. Задача отображается в списке. 2. Отображается список действий с задачей. 3. Открывается форма редактирования с текущими данными задачи. 4. Новые значения отображаются в полях. 5. Изменения применены. 6. В карточке отображаются новое название и новое описание. |
| TC-3-003 | Поиск задачи по уникальному названию | Автотест: test_filter_tasks_by_status_or_search.Маркер: smoke.- Пользователь авторизован. - Через API создана задача с уникальным названием. - Задача относится к процессу из TASK_PROCESS_TITLE. |
1. Открыть раздел задач и перейти в процесс задач. 2. Ввести в поиск уникальное название целевой задачи. 3. Проверить целевую задачу. |
1. Отображается список задач процесса. 2. В поле поиска отображается введенный запрос. 3. Задача с введенным названием отображается в текущем списке. |
| TC-3-004 | Добавление комментария к задаче | Автотест: test_task_add_comment.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру created_task создана задача.Тестовые данные: - Комментарий: Тестовый комментарий <uuid> |
1. Открыть раздел задач и карточку созданной задачи. 2. Перейти на вкладку комментариев. 3. Ввести и отправить комментарий. 4. Дождаться появления точного текста комментария. 5. Повторно открыть карточку и секцию комментариев. 6. Проверить сохранённый комментарий. |
1. Отображается карточка задачи. 2. Отображается блок комментариев. 3. Отправка завершается появлением точного текста комментария, а не только очисткой поля ввода. 4. После повторного открытия комментарий остаётся в списке. |
| TC-3-005 | Редактирование комментария к задаче | Автотест: test_task_edit_comment.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру created_task создана задача.- В задачу добавлен комментарий Тестовый комментарий <uuid>.Тестовые данные: - Новый комментарий: Тестовый комментарий <uuid> (edit) |
1. Открыть карточку задачи и вкладку комментариев. 2. Открыть меню комментария и выбрать редактирование. 3. Заменить текст комментария и сохранить. 4. Проверить результат. |
1. Отображается добавленный комментарий. 2. Открывается режим редактирования комментария. 3. Изменения сохраняются. 4. Старый текст не отображается, новый текст отображается. |
| TC-3-006 | Удаление комментария у задачи | Автотест: test_task_delete_comment.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру created_task создана задача.- В задачу добавлен комментарий Тестовый комментарий <uuid>. |
1. Открыть карточку задачи и вкладку комментариев. 2. Открыть меню комментария и выбрать удаление. 3. Проверить отсутствие комментария. |
1. Отображается добавленный комментарий. 2. Комментарий удаляется. 3. Комментарий больше не отображается. |
| TC-3-007 | Попытка создать задачу без обязательного названия | Автотест: test_create_task_without_required_title.Маркер: regression.- Пользователь авторизован. - Доступен процесс задач. - Доступен пользователь test_mobile_user_1. |
1. Через кнопку добавления задачи открыть форму создания. 2. Заполнить ответственного и описание, не заполняя название. 3. Проверить кнопку создания. |
1. Форма создания отображается. 2. Обязательное поле названия остается пустым. 3. Кнопка «Создать» недоступна для нажатия. |
| TC-3-008 | Попытка сохранить пустой комментарий | Автотест: test_save_empty_comment.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру created_task создана задача. |
1. Под ответственным пользователем открыть задачу из уведомления и перейти на вкладку комментариев. 2. Не вводить текст комментария. 3. Проверить кнопку отправки. |
1. Поле ввода комментария отображается. 2. Поле комментария пустое. 3. Кнопка отправки недоступна для нажатия. |
| TC-3-009 | Удаление задачи | Автотест: test_delete_task.Маркер: smoke.- Пользователь авторизован. - Через API-фикстуру created_task создана задача. |
1. Открыть меню созданной задачи. 2. Выбрать удаление и подтвердить действие. 3. Проверить список задач. |
1. Отображается список действий с задачей. 2. Задача удаляется. 3. Удаленная задача не отображается. |
| TC-3-010 | Пользователь 1 не может управлять комментарием пользователя 2 | Автотест: test_user_1_cannot_manage_user_2_comment.Маркер: regression.- Администратор создал задачу через фикстуру foreign_comment_task.- Пользователь test_mobile_user_2 добавил комментарий к этой задаче. |
1. Авторизоваться отдельной сессией под test_mobile_user_2.2. Добавить комментарий к задаче. 3. Авторизоваться отдельной сессией под test_mobile_user_1.4. Открыть задачу и вкладку комментариев. 5. Проверить меню комментария. |
1. Пользователь авторизован. 2. Комментарий пользователя 2 отображается в задаче. 3. Пользователь авторизован. 4. Комментарий пользователя 2 отображается. 5. Меню редактирования/удаления чужого комментария отсутствует. |
| TC-3-011 | Пользователь 2 не может управлять комментарием пользователя 1 | Автотест: test_user_2_cannot_manage_user_1_comment.Маркер: regression.- Администратор создал задачу через фикстуру foreign_comment_task.- Пользователь test_mobile_user_1 добавил комментарий к этой задаче. |
1. Авторизоваться отдельной сессией под test_mobile_user_1.2. Добавить комментарий к задаче. 3. Авторизоваться отдельной сессией под test_mobile_user_2.4. Открыть задачу и вкладку комментариев. 5. Проверить меню комментария. |
1. Пользователь авторизован. 2. Комментарий пользователя 1 отображается в задаче. 3. Пользователь авторизован. 4. Комментарий пользователя 1 отображается. 5. Меню редактирования/удаления чужого комментария отсутствует. |
| TC-3-012 | Загрузка и удаление PDF-документа в задаче | Автотест: test_task_upload_and_delete_pdf_document.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру created_task создана задача.- Подготовлен PDF-файл 03_task_attachment.pdf. |
1. Открыть созданную задачу. 2. Перейти на вкладку «Документы». 3. Загрузить PDF-файл через системное окно выбора файла. 4. Проверить появление файла в списке документов. 5. Открыть меню документа и удалить его. 6. Проверить отсутствие документа в списке. |
1. Открывается карточка задачи. 2. Отображается раздел документов задачи. 3. PDF-файл успешно загружается. 4. Документ с ожидаемым именем отображается. 5. Документ удаляется. 6. Удалённый документ больше не отображается. |
| TC-3-013 | Открытие PDF-документа в задаче | Автотест: test_task_pdf_document_viewer.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру создана задача. - Подготовлен PDF-файл 09_minimal_one_page.pdf. |
1. Открыть созданную задачу и вкладку «Документы». 2. Загрузить PDF-файл. 3. Нажать на загруженный документ. 4. Проверить заголовок PDF viewer. 5. Вернуться назад в задачу. 6. Удалить документ. |
1. Отображается раздел документов задачи. 2. PDF появляется в списке. 3. Открывается встроенный PDF viewer. 4. В заголовке отображается имя выбранного файла. 5. Снова отображается вкладка документов задачи и загруженный PDF. 6. Документ удалён из списка. |
| TC-3-014 | Открытие изображения в задаче | Автотест: test_task_image_document_viewer.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру создана задача. - Подготовлено PNG-изображение 09_minimal_icon.png. |
1. Открыть вкладку «Документы» задачи. 2. Загрузить PNG-изображение. 3. Нажать на загруженный документ. 4. Вернуться назад из image viewer. 5. Проверить документ в списке и удалить его. |
1. Отображается раздел документов задачи. 2. Изображение появляется в списке. 3. Открывается встроенный image viewer. 4. Снова отображается вкладка документов задачи. 5. Документ доступен и успешно удаляется. |
| TC-3-015 | Скачивание XLSX-документа из задачи | Автотест: test_task_xlsx_document_download.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру создана задача. - Подготовлен XLSX-файл 09_minimal_one_sheet.xlsx. |
1. Открыть вкладку «Документы» задачи. 2. Загрузить XLSX-файл. 3. Нажать на документ и подтвердить скачивание. 4. Проверить файл в каталоге загрузок Android. 5. Удалить серверный документ и локальный файл. |
1. XLSX появляется в списке документов задачи. 2. Открывается окно скачивания. 3. Команда скачивания выполняется. 4. Файл существует на устройстве, его SHA-256 совпадает с исходным XLSX. 5. Тестовые данные очищены. |
| TC-3-016 | Отмена выбора документа в задаче | Автотест: test_task_cancel_document_selection.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру создана задача. - Подготовлен PDF-файл с уникальным именем. |
1. Открыть вкладку «Документы» задачи. 2. Открыть системный file picker. 3. Вернуться назад без выбора подготовленного файла. 4. Проверить список документов. |
1. Системный file picker открывается. 2. После возврата снова отображается раздел документов. 3. Подготовленный файл не появился в задаче. |
| TC-3-017 | Отмена и скачивание XLSX-документа через меню задачи | Автотест: test_task_cancel_and_download_xlsx_document_from_menu.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру создана задача. - Подготовлен XLSX-файл. |
1. Загрузить XLSX в задачу. 2. Открыть download-sheet и отменить скачивание. 3. Проверить отсутствие локального файла. 4. Открыть меню документа и выбрать «Скачать». 5. Проверить целостность скачанного файла по SHA-256. |
1. После отмены файл на устройстве не создаётся. 2. Документ остаётся в списке задачи. 3. Скачивание через меню создаёт файл, идентичный исходному. |
| TC-3-018 | Удаление одного документа задачи сохраняет остальные | Автотест: test_task_delete_one_document_preserves_others.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру создана задача без документов. - Подготовлены PDF- и XLSX-файлы. |
1. Загрузить два документа. 2. Удалить PDF. 3. Проверить, что XLSX остался в списке. 4. Переоткрыть задачу. 5. Повторно проверить отсутствие PDF и наличие XLSX. |
1. Удаляется только выбранный PDF. 2. Второй документ не теряется. 3. Состояние сохраняется после повторного открытия задачи. |
| TC-3-019 | Задача отображается в назначенную дату календаря | Автотест: test_task_is_displayed_on_assigned_calendar_date.Маркер: regression.- Пользователь авторизован. - Через API-фикстуру создана задача со сроком D+2. - Задача относится к доступному пользователю экземпляру процесса. Тестовые данные: - Название задачи: Название тестовой задачи <uuid> calendar- Назначенная дата: D+2 - Соседняя дата: следующий день или предыдущий день для воскресенья |
1. Открыть календарь задач. 2. Выбрать назначенную дату D+2 в месячном календаре. 3. Проверить название задачи в списке выбранного дня. 4. Выбрать соседнюю дату в недельном календаре. 5. Проверить отсутствие задачи в списке соседнего дня. |
1. Открывается месячный календарь задач. 2. Календарь переходит к недельному представлению выбранной даты. 3. В списке выбранного дня отображается API-подготовленная задача. 4. Выбирается соседняя дата той же календарной недели. 5. API-подготовленная задача отсутствует в списке соседнего дня. |
| TC-3-020 | Многодневная задача отображается на всём диапазоне календаря | Автотест: test_multiday_task_is_displayed_for_each_calendar_date.Маркер: regression.- Через API создана задача с началом D+1 и окончанием D+3. |
1. Последовательно выбрать D+1, D+2 и D+3. 2. Проверить задачу в каждом выбранном дне. 3. Выбрать даты до начала и после окончания. |
1. Задача отображается во все дни включительного диапазона. 2. За пределами диапазона задача отсутствует. |
| TC-3-021 | Перенос дат перемещает задачу в календаре | Автотест: test_rescheduled_task_moves_between_calendar_dates.Маркер: regression.- Через API создана однодневная задача на D+2. |
1. Проверить задачу на исходной дате. 2. Через API перенести начало и окончание на D+4. 3. Обновить календарь и проверить обе даты. |
1. До переноса задача видна на D+2. 2. После переноса задача отсутствует на D+2 и отображается на D+4. |
| TC-3-022 | Удалённая задача исчезает из календаря | Автотест: test_deleted_task_disappears_from_calendar.Маркер: regression.- Через API создана задача на D+2. |
1. Проверить задачу в календаре. 2. Удалить задачу через API и дождаться подтверждения удаления. 3. Обновить календарь на той же дате. |
1. До удаления задача отображается. 2. После обновления удалённая задача отсутствует. |
| TC-3-023 | Фильтр по тегу изменяет список задач календаря | Автотест: test_task_filter_applies_to_calendar.Маркер: regression.- На одну дату через API созданы задачи с разными тегами. |
1. Проверить обе задачи на выбранной дате. 2. Выбрать фильтр по тегу и переоткрыть календарь. 3. Проверить отфильтрованный список. 4. Сбросить фильтр, переоткрыть календарь и проверить исходный список. |
1. С выбранным тегом видна только соответствующая задача. 2. После сброса снова отображаются обе задачи. |
| TC-3-024 | UTC-дата около полуночи учитывает часовой пояс устройства | Автотест: test_calendar_uses_device_timezone_near_midnight.Маркер: regression.- Часовой пояс Android установлен в Europe/Moscow.- Через API создана задача на 23:30 UTC. |
1. Рассчитать локальную дату задачи. 2. Выбрать локальную дату в календаре. 3. Проверить задачу и её отсутствие на соседней UTC-дате. |
1. Задача отображается на следующем локальном календарном дне. 2. На исходной UTC-дате задача отсутствует. 3. После теста исходный часовой пояс устройства восстановлен. |
| TC-3-025 | Offline-refresh сохраняет список и получает новые данные после восстановления сети | Автотест: test_tasks_refresh_recovers_after_network_returns.Маркер: regression.- Эмулятор поддерживает ADB root и управление firewall. - Через API создана контрольная задача в процессе из TASK_PROCESS_TITLE. |
1. Найти исходную задачу на корневом экране, открыть найденную группу и проверить задачу в списке. 2. Отключить для эмулятора доступ к тестовому стенду. 3. Выполнить pull-to-refresh и дождаться завершения loader. 4. Проверить, что исходная задача осталась в списке. 5. Пока доступ эмулятора к стенду отключён, создать через API вторую задачу. 6. Восстановить доступ эмулятора к стенду. 7. Повторно выполнить pull-to-refresh. 8. Проверить обе контрольные задачи без перезапуска приложения и повторной авторизации. |
1. Offline-refresh завершается и не очищает загруженный список. 2. Новая серверная задача не появляется до восстановления доступа. 3. После успешного refresh отображаются исходная и новая задачи. 4. Fixture восстанавливает доступ к стенду и удаляет обе задачи независимо от результата теста. |
| TC-3-026 | Завершение задачи и возврат в активные | Автотест: test_task_can_be_completed_and_reactivated.Маркер: regression.- Пользователь авторизован и может управлять API-подготовленной активной задачей. |
1. В меню активной задачи выбрать действие «Завершена» и подтвердить. 2. Открыть раздел завершённых задач и найти задачу. 3. В меню завершённой задачи выбрать действие «Активна» и подтвердить. 4. Открыть раздел активных задач и найти задачу. |
1. API и раздел завершённых подтверждают статус завершённой задачи. 2. API и раздел активных подтверждают возврат задачи в активное состояние. |
| TC-3-027 | Строгая сортировка задач по дате создания | Автотест: test_task_sort_by_created_date_changes_order.Маркер: regression.- Через API созданы три задачи с уникальными названиями и разным временем создания. |
1. Найти три задачи по общему уникальному префиксу. 2. Выбрать сортировку по дате создания и направление по убыванию. 3. Сопоставить вертикальный порядок трёх карточек с их createdAt. |
Карточки отображаются строго от самой новой задачи к самой старой. |
| TC-3-028 | Фильтрация задач по ответственному и участнику | Автотест: test_filter_tasks_by_assignee_and_participant.Маркер: regression.- Созданы целевая и контрольная задачи с разными ответственными и участниками. |
1. Применить фильтр по ответственному целевой задачи. 2. Проверить наличие целевой и отсутствие контрольной задачи. 3. Сбросить фильтры и применить фильтр по участнику целевой задачи. 4. Повторить проверку целевой и контрольной задачи. |
Оба фильтра оставляют связанную задачу в списке и исключают несвязанную; сброс возвращает исходное состояние фильтров. |
| TC-3-029 | Создание задачи из карточки сделки с сохранением связи | Автотест: test_create_task_from_deal_card_links_task_to_deal.Маркер: regression.- Доступна тестовая сделка и пользователи для назначения задачи. |
1. Открыть карточку сделки и вкладку задач. 2. Создать задачу из карточки, указав ответственного, участника и тег. 3. Проверить через API идентификатор связанной сделки. 4. Проверить отсутствие задачи у контрольной сделки. 5. Найти созданную задачу через общий раздел задач. |
Задача отображается во вкладке и общем списке, API возвращает идентификатор исходной сделки, а у контрольной сделки задача отсутствует. |
| TC-3-030 | Запрет изменения и удаления задачи пользователем без прав | Автотест: test_user_without_permissions_cannot_edit_or_delete_foreign_task.Маркер: regression.- Выбран неадминистратор без разрешения can_edit_tasks.- Администратор создал задачу и добавил выбранного пользователя участником. |
1. Под пользователем без права редактирования найти задачу в доступном списке. 2. Если просмотр задач разрешён, попытаться изменить название и описание, затем удалить задачу. 3. Если просмотр задач запрещён, проверить отсутствие сделки с целевой задачей в результатах поиска. 4. Проверить исходные данные и существование задачи через API администратора. |
При разрешённом просмотре действия изменения и удаления отклоняются; при запрещённом просмотре задача недоступна в UI. Название и описание не изменяются, задача не удаляется. |
| TC-3-031 | Ошибка скачивания документа при обрыве сети и успешный повтор | Автотест: test_task_document_download_recovers_after_network_failure.Маркер: regression.- В задачу загружен уникальный XLSX. - Эмулятор поддерживает ADB root для управляемого firewall. |
1. Заблокировать доступ эмулятора к тестовому стенду. 2. Попытаться скачать документ. 3. Проверить сообщение об ошибке и отсутствие локального файла. 4. Восстановить сеть и повторить скачивание. 5. Сверить SHA-256 с исходным файлом. |
1. Offline-скачивание завершается управляемой ошибкой, документ остаётся в задаче. 2. После возврата сети повтор успешен. 3. Содержимое скачанного файла совпадает с исходным. |
| TC-3-032 | Сохранение черновика задачи после background/foreground | Автотест: test_task_draft_survives_background_and_foreground.Маркер: regression.- Пользователь авторизован и открыл форму создания задачи. |
1. Ввести уникальные название и описание, не сохраняя задачу. 2. Перевести приложение в background. 3. Вернуть приложение на передний план. 4. Проверить форму и значения полей. |
1. Форма создания остаётся открытой. 2. Название и описание черновика не теряются. 3. Задача не создаётся. |