Je suis en train de construire une app de barre de menus pour macOS. Elle fonctionne parfaitement sur mon Mac. Maintenant je dois savoir si elle fonctionne sur un macOS propre : sans mes configurations, sans mes autorisations, sans mes données. Un utilisateur qui l’installe à partir de zéro.
Comment on teste ça ? Il faut une machine virtuelle.
“Facile”, me suis-je dit. “J’ai UTM installé. J’ouvre l’assistant, je crée une VM macOS, et c’est parti.”
Ça n’allait pas être si facile.
UTM : joli mais indomptable
UTM est une application formidable. Interface soignée, support pour macOS comme invité sur Apple Silicon, plein écran, presse-papiers partagé. Pour un usage manuel, c’est génial.
Le problème arrive quand on essaie de l’automatiser.
UTM a un CLI appelé utmctl. Il peut lister les VMs, les démarrer, les arrêter, les cloner. Ce qu’il ne peut pas faire, c’est créer une VM. Et pour un invité macOS, même l’AppleScript d’UTM ne permet pas de les créer — le champ du système d’exploitation est hardcodé sur Linux.
En clair : si vous voulez une VM macOS dans UTM, vous la créez manuellement par l’assistant. À chaque fois. Avec ses clics, son téléchargement de l’IPSW (l’image d’installation de macOS pour Apple Silicon — l’équivalent d’un ISO classique, mais empaqueté par Apple), son attente d’installation.
Pour un dev qui doit créer et détruire des VMs dans le cadre d’un flux de QA, c’est vraiment pénible.
Tart : VMs macOS for the rest of us
Tart c’est ce qui arrive quand quelqu’un conçoit un outil de virtualisation en pensant aux développeurs plutôt qu’aux utilisateurs finaux.
Il utilise exactement le même Virtualization.framework d’Apple qu’UTM. Même technologie, mêmes performances, même vitesse native. La différence c’est l’interface : Tart est CLI-first.
| |
Et voilà. Pas de GUI de configuration, pas d’assistant. Un binaire dans votre PATH.
Une commande pour les gouverner tous
Créer une VM macOS avec la dernière version disponible :
| |
C’est tout. latest dit à Tart “donne-moi la dernière version de macOS que ce Mac supporte”. Tart consulte l’API d’Apple, télécharge l’IPSW (~15 GB — oui, macOS ça pèse), crée le disque virtuel, installe le système d’exploitation et vous laisse la VM prête à démarrer. Allez prendre un café, parce que ça prend du temps — mais vous n’avez rien à toucher.
Démarrer la VM :
| |
Une fenêtre s’ouvre avec le bureau de macOS. Souris, clavier, écran. Exactement comme UTM, mais lancé depuis un tart run.
Dossier partagé : le détail qui fait la différence
C’est là que Tart m’a conquis. J’ai besoin de copier mon app depuis le Mac hôte vers la VM. Dans UTM il faut configurer VirtioFS manuellement, le monter depuis le terminal de l’invité, et prier pour que le config.plist ne se corrompe pas (il y a des bugs connus).
Dans Tart :
| |
Dans la VM, le dossier apparaît dans /Volumes/My Shared Files/shared. Vous glissez l’app vers /Applications et c’est bon. Sans rien configurer, sans rien monter.
Mon flux de QA réel
Voici ce que je fais pour tester mon app sur un macOS propre :
| |
Dans la VM :
- J’ouvre
/Volumes/My Shared Files/build/ - Je glisse
Tokamak.appvers/Applications/ - J’exécute et vérifie : login, autorisations, sandbox, barre de menus, notifications
Si j’ai besoin de repartir de zéro (tester l’expérience de premier lancement) :
| |
Détruire et recréer. Sans questions, sans confirmations, sans assistant.
Configurer les ressources
Par défaut Tart assigne des ressources raisonnables, mais vous pouvez les ajuster :
| |
Ce que Tart n’a pas (et pourquoi ce n’est pas grave)
Il n’a pas d’interface de gestion avec des vignettes de chaque VM. Il n’a pas de drag and drop pour les ISOs. Il n’a pas de joli bouton “Nouvelle VM”.
Si ce dont vous avez besoin c’est une app de bureau pour gérer des VMs, utilisez UTM. C’est fantastique pour ça.
Mais si ce dont vous avez besoin c’est tester votre app sur un macOS propre, détruire la VM, la recréer, partager un dossier, et faire tout ça depuis un script ou un Makefile… UTM ne peut pas. Tart si.
La recette complète
| |
La documentation tient dans un README. La courbe d’apprentissage tient dans un café. Si vous développez pour macOS et n’utilisez pas Tart, vous vous compliquez la vie inutilement.