SuperAPI AI 工具集

ios-simulator-pwa-testing

测试与质量

查看项目

更新于 10-16 04:13

技能介绍

用途

该技能用于在 macOS 上使用 iOS Simulator 测试和调试 PWA(渐进式 Web 应用),以获得接近真实 iOS Safari 的体验。

前置条件

  • 从 App Store 安装 Xcode
  • 安装 Xcode Command Line Tools:xcode-select --install
  • 启用 Safari 开发者菜单

快速开始

1. 启动模拟器

# 打开 Simulator 应用
open -a Simulator

或启动特定设备:

xcrun simctl boot "iPhone 15 Pro"
open -a Simulator

2. 打开 PWA

# 打开 localhost URL(模拟器可访问 Mac 的 localhost)
xcrun simctl openurl booted "http://localhost:3000"

# 或任意 URL
xcrun simctl openurl booted "https://your-pwa.com"

3. 使用 Safari Web Inspector 调试

  • 启用 Safari 开发菜单:Safari → 设置 → 高级 → “显示网页开发者功能”
  • 在 Mac 上打开 Safari
  • 前往“开发”菜单 → 模拟器 → 选择你的网页
  • 完整的 Web Inspector 打开,包含 Console、Elements、Network 等

simctl 命令参考

设备管理

# 列出所有可用模拟器
xcrun simctl list devices

# 仅列出已启动的模拟器
xcrun simctl list devices | grep Booted

# 启动模拟器
xcrun simctl boot "iPhone 15 Pro"
xcrun simctl boot <DEVICE-UUID>

# 关闭模拟器
xcrun simctl shutdown booted
xcrun simctl shutdown all

# 抹掉模拟器(恢复出厂设置)
xcrun simctl erase booted

# 删除不可用/旧模拟器
xcrun simctl delete unavailable

打开 URL

# 在已启动的模拟器中打开 URL
xcrun simctl openurl booted "http://localhost:3000"

# 在特定模拟器中打开 URL
xcrun simctl openurl "iPhone 15 Pro" "https://example.com"

截图与录制

# 截图
xcrun simctl io booted screenshot ~/Desktop/ios-screenshot.png

# 录制视频(Ctrl+C 停止)
xcrun simctl io booted recordVideo ~/Desktop/ios-recording.mp4

# 指定格式
xcrun simctl io booted recordVideo --type=mp4 ~/Desktop/recording.mp4

媒体与文件

# 向模拟器添加照片/视频
xcrun simctl addmedia booted ~/Desktop/test-image.png
xcrun simctl addmedia booted ~/Desktop/test-video.mp4

Safari Web Inspector 功能

通过“开发”菜单连接后:

  • Console:查看 JS 日志、错误、Service Worker 日志
  • Elements:检查 DOM,实时修改 CSS
  • Network:监控请求,检查 Service Worker 缓存
  • Sources:调试 JavaScript,设置断点
  • Storage:检查 localStorage、IndexedDB、Cache Storage
  • Service Workers:调试 Service Worker(在“开发”菜单中作为独立上下文显示)

调试 Service Worker

PWA Service Worker 会出现在 Safari 的“开发”菜单中:

  1. 在模拟器中打开 PWA
  2. Safari → 开发 → 模拟器 → 查找 “Service Worker” 条目
  3. 打开检查器,包含 Console、Sources、Network 标签页

注意:Service Worker 调试在模拟器中比在物理设备上效果更好。

无障碍测试

使用 Accessibility Inspector

  1. 打开 Xcode
  2. Xcode → Open Developer Tool → Accessibility Inspector
  3. 从设备下拉菜单中选择模拟器
  4. 悬停在元素上查看无障碍信息
  5. 运行 Audit 查找无障碍问题

命令行无障碍快照

# 获取无障碍层级(需要运行中的应用)
xcrun simctl ui booted accessibility

PWA 特定测试

添加到主屏幕(手动)

  1. 在模拟器的 Safari 中打开 PWA URL
  2. 点击分享按钮(底部栏)
  3. 选择“添加到主屏幕”
  4. PWA 作为独立应用安装

测试已安装的 PWA

  • 已安装的 PWA 在 Web.app 引擎中运行(与真实设备相同)
  • 通过“开发”菜单作为独立 Web 上下文访问
  • 测试 display-mode: standalone 媒体查询
  • 验证启动画面、图标、主题颜色

Manifest 验证

检查 manifest 是否正确加载:

  1. 打开 Web Inspector → Application 标签页(如可用)或 Network 标签页
  2. 查找 manifest.json 请求
  3. 验证所有图标、theme_color、display 模式

多设备测试脚本

运行 scripts/multi-device-test.sh 在多种设备尺寸上测试:

./scripts/multi-device-test.sh "http://localhost:3000"

模拟器常用键盘快捷键

快捷键 操作
⌘ + Shift + H 回到主屏幕
⌘ + Shift + H (x2) 应用切换器
⌘ + → / ⌘ + ← 旋转设备
⌘ + S 截图
⌘ + R 录制视频
⌘ + K 切换键盘

故障排除

Safari 开发菜单中显示“无可检查的应用”

  • 确保模拟器的 Safari 中已打开网页
  • 重启 Mac 上的 Safari
  • 重启模拟器

模拟器未出现在开发菜单中

  • 退出 Safari 和模拟器
  • 先重新打开模拟器,再打开 Safari

localhost 无法访问

  • 使用 http://localhost:PORT(模拟器共享 Mac 的网络栈)
  • 尝试 http://127.0.0.1:PORT 作为替代

Service Worker 未更新

  • 在模拟器中清除 Safari 缓存:设置 → Safari → 清除历史记录与网站数据
  • 或抹掉模拟器:xcrun simctl erase booted