| name | mockdevice-testing |
| description | MockDeviceKit for testing without physical glasses hardware |
MockDevice Testing (iOS)
Use MockDeviceKit to test DAT SDK integrations without physical Meta glasses.
MockDeviceKit simulates Meta glasses behavior for development and testing. It provides:
MockDeviceKit — Entry point for creating simulated devices
MockGlasses — Simulated glasses (Ray-Ban Meta, etc.)
MockCameraKit — Simulated camera with configurable video feed and photo capture
Setup
Add MWDATMockDevice to your target via Swift Package Manager (it's included in the meta-wearables-dat-ios package).
import MWDATMockDevice
Creating a mock device
import MWDATMockDevice
let mockDeviceKit = MockDeviceKit.shared
mockDeviceKit.enable()
let mockDevice = try mockDeviceKit.pairGlasses(model: .rayBanMeta)
Simulating device states
mockDevice.powerOn()
mockDevice.unfold()
mockDevice.don()
mockDevice.doff()
mockDevice.fold()
mockDevice.powerOff()
Configuring permissions
MockDeviceKit provides permissions to control permission behavior without the Meta AI app.
By default, requestPermission() returns .granted. Use set(_:_:) to control checkPermissionStatus() and setRequestResult(_:result:) to control requestPermission() outcomes.
let mockDeviceKit = MockDeviceKit.shared
mockDeviceKit.permissions.set(.camera, .denied)
mockDeviceKit.permissions.setRequestResult(.camera, result: .denied)
Setting up mock camera feeds
Video streaming
let camera = mockDevice.services.camera
camera.setCameraFeed(fileURL: videoURL)
Photo capture
let camera = mockDevice.services.camera
camera.setCapturedImage(fileURL: imageURL)
Writing tests with MockDeviceKit
Create a reusable test base class:
import XCTest
import MetaWearablesDAT
@MainActor
class MockDeviceKitTestCase: XCTestCase {
private var mockDevice: MockGlasses?
private var cameraKit: MockCameraKit?
override func setUp() async throws {
try await super.setUp()
MockDeviceKit.shared.enable()
mockDevice = try MockDeviceKit.shared.pairGlasses(model: .rayBanMeta)
cameraKit = mockDevice?.services.camera
}
override func tearDown() async throws {
MockDeviceKit.shared.disable()
mockDevice = nil
cameraKit = nil
try await super.tearDown()
}
}
Using MockDeviceKit in the CameraAccess sample
The CameraAccess sample app includes a Debug menu for MockDeviceKit:
- Tap the Debug icon to open the MockDeviceKit menu
- Tap Pair RayBan Meta to create a simulated device
- Use PowerOn, Unfold, Don to simulate glasses states
- Select video/image files to configure mock camera feeds
- Start streaming to see simulated frames
Supported media formats
| Type | Formats |
|---|
| Video | h.265 (HEVC) |
| Image | JPEG, PNG |
Links