diff --git a/README.md b/README.md index a0d256f..7fbca12 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,9 @@

- ARTEMIS Banner + ARTEMIS Banner

- ARTEMIS: Next-Gen AI Mobile Test Automation & Autonomous Assistant Platform
- Autonomous Real-time Testing, Exploration & Mobile Interaction System -

- -

- ⚡ Test Real Devices from Antigravity & Claude Code • Cross-App Automation • Zero-Maintenance Testing • Bug Repro & Logcat Diagnostics + Let AI assistants and test suites use real phones like a human.

diff --git a/README_CN.md b/README_CN.md index f7a61be..9297857 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,14 +1,9 @@

- ARTEMIS Banner + ARTEMIS Banner

- ARTEMIS: 下一代 AI 驱动的移动端自动化测试与个人助理平台
- Autonomous Real-time Testing, Exploration & Mobile Interaction System -

- -

- ⚡ 让 Antigravity / Claude Code 测试真机 • 跨 App 复杂自动化 • 零脚本维护自动化测试 • 智能 Bug 复现与 Logcat 诊断 + 让 AI 助手与测试套件像人一样直接操作真机。

diff --git a/docs/assets/artemis-banner-cn.png b/docs/assets/artemis-banner-cn.png index a0a7f1e..b8b1748 100644 Binary files a/docs/assets/artemis-banner-cn.png and b/docs/assets/artemis-banner-cn.png differ diff --git a/docs/assets/artemis-banner-en.png b/docs/assets/artemis-banner-en.png index c873078..f003fd8 100644 Binary files a/docs/assets/artemis-banner-en.png and b/docs/assets/artemis-banner-en.png differ diff --git a/docs/assets/artemis-banner.png b/docs/assets/artemis-banner.png index c873078..f003fd8 100644 Binary files a/docs/assets/artemis-banner.png and b/docs/assets/artemis-banner.png differ diff --git a/docs/assets/generate_banner.py b/docs/assets/generate_banner.py index 1c31cda..e2c4232 100644 --- a/docs/assets/generate_banner.py +++ b/docs/assets/generate_banner.py @@ -14,6 +14,7 @@ import os import subprocess +from pathlib import Path def create_banner_html(lang="en"): @@ -22,8 +23,6 @@ def create_banner_html(lang="en"): @@ -658,71 +555,20 @@ def create_banner_html(lang="en"):

-
-
-
-
+
+
+
+
- +
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+

ARTEMIS

-

ARTEMIS

-
- - -
- Autonomous Real-time Testing, Exploration & Mobile Interaction System -
- -
__TAGLINE__
- +
__PROMPT_LABEL__ @@ -732,15 +578,15 @@ def create_banner_html(lang="en"):
- > __PROMPT_TEXT__ + > __PROMPT_TEXT__
- +
- +
@@ -760,37 +606,17 @@ def create_banner_html(lang="en"): __STEP_2__
- +
__STEP_3_TITLE__ - __STEP_3_TIME__ + __STEP_3_TAG__
-
- __STEP_3_DESC__ +
+ CPU < 5.0% + 4.2% PASS
- - -
-
- __METRIC_1_LABEL__ - 4.2% -
-
- __METRIC_2_LABEL__ - __METRIC_2_VAL__ -
-
- __METRIC_3_LABEL__ - 48kHz / A2DP -
-
- -
- ○ - __STEP_4__ -
@@ -801,27 +627,22 @@ def create_banner_html(lang="en"):
__SCREEN_TITLE__ - __DEVICE_TAG__ + ● PIXEL
🎵
Coldplay - Yellow - __ITEM_SUB__ + Pixel Buds Pro
- __ITEM_PRICE__ -
- -
- __SEC_TEXT__ - 🎧 Pixel Buds Pro (A2DP) + ▶
-
__GROUNDING_TAG__
+
🎯 GROUNDED
__MOCK_BTN__ @@ -842,55 +663,33 @@ def create_banner_html(lang="en"): """ if lang == "cn": replacements = { - "__TAGLINE__": "用 Artemis 测试任意安卓手机", - "__PROMPT_LABEL__": "目标 / 提示词", - "__PROMPT_STATUS__": "设备实机运行中", - "__PROMPT_TEXT__": "连接蓝牙耳机播放歌曲,并持续采集 CPU 性能指标", - "__CONSOLE_TITLE__": "宿主智能体控制台", - "__CONSOLE_BADGE__": "实时监控中", - "__STEP_1__": "1. 自动连接蓝牙耳机", - "__STEP_2__": "2. 打开播放器并播放歌曲", - "__STEP_3_TITLE__": "▶ 3. 持续采集 CPU 性能指标", - "__STEP_3_TIME__": "运行中", - "__STEP_3_DESC__": "ADB 轮询 top -n 1 (进程 ID: 14208)", - "__METRIC_1_LABEL__": "目标应用 CPU", - "__METRIC_2_LABEL__": "蓝牙音频状态", - "__METRIC_2_VAL__": "● 已连接", - "__METRIC_3_LABEL__": "音频采样率", - "__STEP_4__": "4. 断言验证 CPU < 5.0% 阈值", + "__TAGLINE__": "让 AI 助手与测试套件像人一样直接操作真机", + "__PROMPT_LABEL__": "🎯 测试指令", + "__PROMPT_STATUS__": "真机运行中", + "__PROMPT_TEXT__": "连接蓝牙耳机播放音乐,断言 CPU 占用 < 5%", + "__CONSOLE_TITLE__": "真机测试执行引擎", + "__CONSOLE_BADGE__": "通过", + "__STEP_1__": "连接蓝牙耳机", + "__STEP_2__": "打开播放器并播放歌曲", + "__STEP_3_TITLE__": "▶ 断言性能指标", + "__STEP_3_TAG__": "实时验证", "__SCREEN_TITLE__": "正在播放", - "__DEVICE_TAG__": "● PIXEL 实机", - "__ITEM_SUB__": "输出设备: Pixel Buds Pro", - "__ITEM_PRICE__": "播放中 ▶", - "__SEC_TEXT__": "当前音频输出设备", - "__GROUNDING_TAG__": "🎯 AI 视觉锚定 (0.99)", - "__MOCK_BTN__": "媒体输出控制器", + "__MOCK_BTN__": "音频输出控制", } else: replacements = { - "__TAGLINE__": "Test Any Android Phone with Autonomous Assistant Platform", - "__PROMPT_LABEL__": "Goal / Prompt", - "__PROMPT_STATUS__": "RUNNING ON DEVICE", - "__PROMPT_TEXT__": "Connect to Bluetooth earbuds, play a song, and capture CPU usage metrics", - "__CONSOLE_TITLE__": "Host Agent Console", - "__CONSOLE_BADGE__": "MONITORING", - "__STEP_1__": "1. Connect to Bluetooth earbuds", - "__STEP_2__": "2. Launch music player & play song", - "__STEP_3_TITLE__": "▶ 3. Capture CPU usage metrics", - "__STEP_3_TIME__": "Active", - "__STEP_3_DESC__": "ADB polling top -n 1 (pid: 14208)", - "__METRIC_1_LABEL__": "Target App CPU", - "__METRIC_2_LABEL__": "Bluetooth Audio", - "__METRIC_2_VAL__": "● Connected", - "__METRIC_3_LABEL__": "Sample Rate", - "__STEP_4__": "4. Assert CPU < 5.0% threshold", + "__TAGLINE__": "Let AI assistants and test suites use real phones like a human", + "__PROMPT_LABEL__": "🎯 TEST PROMPT", + "__PROMPT_STATUS__": "RUNNING", + "__PROMPT_TEXT__": "Connect Bluetooth earbuds, play song, and assert CPU < 5%", + "__CONSOLE_TITLE__": "Test Runner", + "__CONSOLE_BADGE__": "PASSED", + "__STEP_1__": "Connect Bluetooth earbuds", + "__STEP_2__": "Launch player & play song", + "__STEP_3_TITLE__": "▶ Assert Performance SLA", + "__STEP_3_TAG__": "VERIFYING", "__SCREEN_TITLE__": "Now Playing", - "__DEVICE_TAG__": "● PIXEL LAB", - "__ITEM_SUB__": "Output: Pixel Buds Pro", - "__ITEM_PRICE__": "Playing ▶", - "__SEC_TEXT__": "Active Audio Output Device", - "__GROUNDING_TAG__": "🎯 GROUNDED (0.99)", - "__MOCK_BTN__": "Media Output Controls", + "__MOCK_BTN__": "Audio Output", } for key, val in replacements.items(): @@ -905,11 +704,11 @@ def render_image(html_str, output_path): cmd = [ "google-chrome", - "--headless=new", + "--headless", "--disable-gpu", - "--virtual-time-budget=2000", + "--no-sandbox", + "--disable-dev-shm-usage", "--window-size=1280,480", - "--device-scale-factor=2", "--hide-scrollbars", f"--screenshot={output_path}", f"file://{temp_html}", @@ -921,16 +720,15 @@ def render_image(html_str, output_path): print(f"Error rendering {output_path}: {res.stderr}") -from pathlib import Path +if __name__ == "__main__": + assets_dir = Path(__file__).resolve().parent + os.makedirs(assets_dir, exist_ok=True) -assets_dir = Path(__file__).resolve().parent -os.makedirs(assets_dir, exist_ok=True) + # Generate English main banner and en banner + en_html = create_banner_html(lang="en") + render_image(en_html, str(assets_dir / "artemis-banner.png")) + render_image(en_html, str(assets_dir / "artemis-banner-en.png")) -# Generate English main banner and en banner -en_html = create_banner_html(lang="en") -render_image(en_html, str(assets_dir / "artemis-banner.png")) -render_image(en_html, str(assets_dir / "artemis-banner-en.png")) - -# Generate Chinese banner -cn_html = create_banner_html(lang="cn") -render_image(cn_html, str(assets_dir / "artemis-banner-cn.png")) + # Generate Chinese banner + cn_html = create_banner_html(lang="cn") + render_image(cn_html, str(assets_dir / "artemis-banner-cn.png"))