diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f586d9..ae64517 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,19 @@ every change carries a descriptive commit message. ## [Unreleased] +## [3.38.0] — 2026-10-24 + +### Added + +- **Known-file picker in the test-script file actions.** The `UPDATE file` / + `READ file` step editor's path field gains the selector the APDU builder's + SELECT rows use: the file-manager tree, the custom files and the standard + file list (`uicc_files.json`), grouped by root with a filter, filling the + path. Only EFs are offered (the action reads/writes a file; a DF/ADF is not + a target); the text field stays authoritative, so a name path or a file the + lists do not carry can still be typed, and the picker preselects the current + path when it is known. + ## [3.37.0] — 2026-10-23 ### Added diff --git a/docs/test-scripts.md b/docs/test-scripts.md index 9536e6c..c488823 100644 --- a/docs/test-scripts.md +++ b/docs/test-scripts.md @@ -329,7 +329,12 @@ consecutive runs continue correctly. | `proactive-drain` | `respond`, `first`, `attempts` 1–1000 (default 3), `interval_ms` (default 200), `require` | drain the card's announced proactive commands and confirm it is idle (see below) | `path` is `/`-separated: `MF` (or `3F00`) or an ADF name/AID first, then FIDs -or file names - e.g. `MF/7F20/6F07`, `ADF.USIM/EF.TEST`. +or file names - e.g. `MF/7F20/6F07`, `ADF.USIM/EF.TEST`. The step editor's +**pick a known file** selector (the same source merge as the APDU builder's +SELECT picker: the loaded file tree, custom files and the standard +`uicc_files.json` list, grouped by root, with a filter) fills the path; +only EFs are listed, and the text field stays authoritative (typing a name +path or an unlisted file is always possible). `file-write` sends a direct terminal-side UPDATE BINARY/RECORD - it does **not** fire the card's EVENT_REMOTE_FILE_UPDATE (that event reports an update done by diff --git a/frontend/help-ru.html b/frontend/help-ru.html index b92427c..d99af3f 100644 --- a/frontend/help-ru.html +++ b/frontend/help-ru.html @@ -575,7 +575,7 @@

У вкладки четыре представления: список наборов (по умолчанию; Добавить набор / Редактировать / Запустить / Экспорт / Удалить), редактор набора (скрипты набора в порядке выполнения — необязательный setup первым и teardown последним, с пометками ролей; у каждого скрипта Запустить/Редактировать/Переместить/Скопировать/Удалить, политика при ошибке остановить (по умолчанию) / продолжить и Требуется ADM), редактор скрипта (список шагов; кнопка Старт выполняет только этот скрипт и показывает результат под шагами — он не сохраняется) и отчёт набора (после запуска набора: статус каждого скрипта, таблица шагов с ожидаемым/фактическим, примечание об ошибке и выдержка из журнала запуска; сводка с успешно/предупреждения/ошибки/пропущено, время выполнения, счётчики SCP80 до → после по каждому keyset, пресет и предупреждение о смене сессии карты; экспорт в JSON или Markdown). Запуск набора выполняет его скрипты по порядку в одной сессии карты, без сбросов и без продолжения с места остановки; при ошибке решает, остановится ли набор на этом скрипте или запустится следующий, teardown выполняется всегда при остановке или ошибке (пока карта в ридере), чтобы следующий тест начался с чистого состояния, а сброс карты останавливает набор и отмечается в отчёте. Начать со сброса карты сбрасывает карту и выполняет полную переинициализацию перед запуском набора (скрипты затем работают со свежеинициализированной картой); пресет должен по-прежнему совпадать с ICCID карты, а требуемый ADM проверяется заново для новой сессии карты. Инициализация поглощает начальные proactive-команды карты, поэтому скрипт не поймает первую команду после сброса (они остаются в журнале proactive). Требуется ADM (у набора или скрипта) проверяет ключ ADM из подобранного пресета один раз перед запуском — ошибка отклоняет запуск (проверьте вручную через значок ADM; автоматических повторов нет). Скрипты хранятся в хранилище наборов (~/.pysim-simple-server/test_suites.json, --test-suites); каждый скрипт принадлежит ровно одному набору, и скрипт можно переместить или скопировать в другой набор (экспорт набора — это пакет с набором и его скриптами; старый экспорт только скриптов импортируется в автоматически созданный набор «Imported scripts»).

Прогон можно повторить: поле «Итерации» рядом с Start / Run suite выполняет скрипт или весь набор указанное число раз — это нагрузочный тест. Успешные итерации не сохраняются: в статусе видны только счётчик (итерация k / N) и время, журнал шагов остаётся пустым, а память не растёт при любом числе итераций. Первая итерация, завершившаяся ошибкой, останавливает цикл и сохраняет свой полный отчёт (шаги, неудачные проверки, фрагмент журнала, отчёт по скриптам набора); Остановить завершает работу после текущей итерации, а смена карты между итерациями считается ошибкой (следующая карта никогда не запускается со скриптом другой карты). Число итераций — параметр прогона, сохранённый скрипт/набор не меняется; счётчики SCP80 продолжаются с того значения, которое израсходовала предыдущая итерация.