baguette: کنترل شبیهساز iOS بدون Xcode
خلاصهٔ کاملتر
baguette یه ابزار خط فرمان نوشتهشده با سوییفت بهعلاوهٔ یه رابط وب مستقله که کنترل کامل و هدلس شبیهساز iOS رو بدون باز کردن Xcode یا Simulator.app ممکن میکنه. دستگاهها رو بوت میکنه، تصویر صفحهشون رو تا ۶۰ فریم بر ثانیه استریم میکنه، لاگ یکپارچه رو دنبال میکنه، اسکرینشات و ضبط ویدیو میگیره و از نسخهٔ ۰.۱.۷۲ حتی وبکم مک رو به APIهای دوربین شبیهساز وصل میکنه.
مهمترین بخش فنیاش تزریق ورودی از سمت هاسته. لمس، سوایپ، ژستهای یک و دوانگشتی، پینچ، اسکرول، کیبورد مک و دکمههای سختافزاری مثل هوم و لاک و صدا و حتی تاج دیجیتال اپل واچ همگی از طریق سیمبلهای خصوصی SimulatorKit با قراردادهای فراخوانی iOS 26 کار میکنن. مسیر لمس جریانی و ژستهای لبهٔ صفحه هم از IOHIDDigitizerDispatch استفاده میکنه، یعنی سوایپ نوار هوم، کشیدن به سمت اپسوییچر و پایین کشیدن مرکز اعلانها واقعاً تشخیصدهندههای خود iOS رو فعال میکنن.
پروتکل ورودی هم عمداً ساده نگه داشته شده: JSON خطبهخط روی ورودی استاندارد یا همون وبسوکتی که تصویر رو میفرسته، و بهازای هر خط یه تأیید برمیگرده. مختصاتها هم بهجای نسبت نرمالشده، بر حسب نقطهٔ دستگاهن.
{"type":"tap", "x":219, "y":478, "width":438, "height":954, "duration":0.05}
{"type":"button", "button":"home"}کنار اینها baguette describe-ui درخت دسترسپذیری صفحه رو بهشکل JSON با نقش و برچسب و مختصات هر گره برمیگردونه و حالت hit-test هم بالاترین گره زیر یه مختصات رو میده؛ چیزی که برای تست خودکار حسابی به کار میاد. رابط وب هم علاوه بر صفحهٔ تکدستگاه، یه نمای «مزرعهٔ دستگاه» داره که همهٔ شبیهسازهای بوتشده رو کنار هم نشون میده و با کلیک روی هرکدوم، همون کاشی با کیفیت کامل استریم و کنترل میشه.
نویسنده تأکید کرده که پروژه با رویکرد TDD ساخته شده و بیش از ۴۶۰ تست داره که اجراشون اصلاً به شبیهساز نیاز نداره. محدودیتها هم شفاف گفته شدن: دکمهٔ سیری فعلاً باعث کرش میشه و از طرف ابزار رد میشه، و تایپ فقط US-ASCII رو پوشش میده. اجرا هم فقط روی مکهای اپل سیلیکون با Xcode 26 ممکنه.
نکات کلیدی:
- کنترل هدلس شبیهساز iOS 26 با یه CLI سوییفت بهعلاوهٔ رابط وب، بدون Xcode
- استریم تصویر با MJPEG یا H.264 روی وبسوکت با نرخ و کیفیت قابل تنظیم
- تزریق لمس، ژست، کیبورد و دکمههای سختافزاری از سمت هاست با پروتکل JSON خطبهخط
- ژستهای سیستمی لبهٔ صفحه واقعاً تشخیصدهندههای iOS رو فعال میکنن
- describe-ui درخت دسترسپذیری رو بهشکل JSON برمیگردونه؛ مناسب تست خودکار
- نمای مزرعهٔ دستگاه برای دیدن و کنترل همزمان چند شبیهساز
- فقط اپل سیلیکون و Xcode 26؛ دکمهٔ سیری و تایپ غیر ASCII هنوز پشتیبانی نمیشن




