Add screen dumps and app version track for Ozon Bank 19.19.1, including Compose-specific parsing logic and new XML assets.
This commit is contained in:
parent
ba476bae50
commit
e8ddde7e36
79
android/ozon/AppVersionTrack.h
Normal file
79
android/ozon/AppVersionTrack.h
Normal file
@ -0,0 +1,79 @@
|
||||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
#include <QVersionNumber>
|
||||
|
||||
namespace Ozon {
|
||||
|
||||
// «Трек» формата UI приложения Ozon Банк. Между версиями менялся способ, которым
|
||||
// uiautomator отдаёт интерактивные элементы: старый UI отдавал видимый text у кнопок
|
||||
// и вкладок, новый (Compose-семантика, наблюдается на 19.19.1) — пустой text и
|
||||
// стабильные тест-id в content-desc (например transfer-button-shared, replenish-button,
|
||||
// "key 1" у пин-пада, Главная|FINANCE_TAB1). Трек — нормализованный ярлык версии, по
|
||||
// которому код выбирает версионно-зависимую ветку парсинга (см. ScreenXmlParser::setVersionTrack).
|
||||
//
|
||||
// На момент введения каркаса детекторы уже сделаны обратносовместимыми (матч сначала по
|
||||
// text, затем fallback на content-desc), поэтому отдельных веток по треку ещё нет — трек
|
||||
// служит явным швом для будущих расхождений и читаемым маркером в логах/дампах.
|
||||
//
|
||||
// ─────────────────────────────────────────────────────────────────────────
|
||||
// КАК ДОБАВЛЯТЬ НОВУЮ ВЕРСИЮ ПРИЛОЖЕНИЯ
|
||||
// ─────────────────────────────────────────────────────────────────────────
|
||||
// Отдельные скрипты на каждую версию НЕ нужны — по умолчанию все версии обслуживает
|
||||
// один общий комплект скриптов. Выбирайте по объёму изменений:
|
||||
//
|
||||
// 1) Формат экранов не изменился (косметика, переименование в той же структуре).
|
||||
// → НИЧЕГО не делаем. Версия новее последнего порога автоматически трактуется как
|
||||
// новейший трек (см. trackForVersion). Опционально — эталонные дампы в
|
||||
// assets/ozon/<версия>/ для сверки.
|
||||
//
|
||||
// 2) Изменился один-два экрана.
|
||||
// → Добавляем элемент в enum (например V20_0) и НОВЫЙ порог в trackForVersion().
|
||||
// В методе, который парсит изменившийся экран, ставим точечную ветку:
|
||||
// if (m_track >= AppVersionTrack::V20_0) { …новый формат… }
|
||||
// else { …существующий… }
|
||||
// Скрипты остаются ОБЩИМИ. Старые ветки (Legacy/19_19_1) не удаляем — в поле
|
||||
// могут оставаться старые версии. Версионно-зависимые точки сегодня:
|
||||
// ScreenXmlParser (isHomeScreen / findPinCodeNodes — кнопки и пин-пад в content-desc),
|
||||
// PayBy{Card,Phone}Script (домашняя «Перевести» = transfer-button-shared).
|
||||
//
|
||||
// 3) Версия разошлась радикально (другой флоу почти везде) — КРАЙНИЙ случай.
|
||||
// → Только тогда выносим версию в отдельный класс скрипта и выбираем его по треку
|
||||
// в EventHandler. Точка ветвления (app.appVersion → trackForVersion) уже есть.
|
||||
//
|
||||
// Значения enum упорядочены по возрастанию версии — можно сравнивать через <, <=, >, >=.
|
||||
enum class AppVersionTrack {
|
||||
Legacy, // < 19.19.1 — старый UI: подписи кнопок/вкладок в видимом text
|
||||
V19_19_1, // >= 19.19.1 — Compose-семантика: тест-id в content-desc (и новейший по умолчанию)
|
||||
};
|
||||
|
||||
// Резолвит трек из строки версии (например "19.19.1", полученной через
|
||||
// AdbUtils::getAppVersion → BankProfileInfo.appVersion). Сравнение — через
|
||||
// QVersionNumber, а не лексикографически по строке.
|
||||
//
|
||||
// Неизвестная/непарсящаяся версия, а также любая версия новее последнего известного
|
||||
// порога, трактуется как новейший известный трек (V19_19_1): свежие апдейты по умолчанию
|
||||
// идут по последнему формату, а не падают на Legacy.
|
||||
inline AppVersionTrack trackForVersion(const QString &appVersion) {
|
||||
static const QVersionNumber kV19_19_1(19, 19, 1);
|
||||
|
||||
qsizetype suffixIndex = 0;
|
||||
const QVersionNumber v = QVersionNumber::fromString(appVersion.trimmed(), &suffixIndex);
|
||||
if (v.isNull()) {
|
||||
// Не смогли распарсить — считаем новейшим известным форматом.
|
||||
return AppVersionTrack::V19_19_1;
|
||||
}
|
||||
if (v < kV19_19_1) return AppVersionTrack::Legacy;
|
||||
return AppVersionTrack::V19_19_1;
|
||||
}
|
||||
|
||||
// Человекочитаемое имя трека для логов.
|
||||
inline const char *trackName(AppVersionTrack track) {
|
||||
switch (track) {
|
||||
case AppVersionTrack::Legacy: return "Legacy(<19.19.1)";
|
||||
case AppVersionTrack::V19_19_1: return "19.19.1";
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
} // namespace Ozon
|
||||
BIN
assets/ozon/19.19.1/pay/pay_by_card_enter_sum.png
Normal file
BIN
assets/ozon/19.19.1/pay/pay_by_card_enter_sum.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 158 KiB |
1
assets/ozon/19.19.1/pay/pay_by_card_enter_sum.xml
Normal file
1
assets/ozon/19.19.1/pay/pay_by_card_enter_sum.xml
Normal file
File diff suppressed because one or more lines are too long
BIN
assets/ozon/19.19.1/pay/pay_by_card_success.png
Normal file
BIN
assets/ozon/19.19.1/pay/pay_by_card_success.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 609 KiB |
1
assets/ozon/19.19.1/pay/pay_by_card_success.xml
Normal file
1
assets/ozon/19.19.1/pay/pay_by_card_success.xml
Normal file
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user