diff --git a/docs/modules/manual-testing/images/bluetooth-audio-device-filter.png b/docs/modules/manual-testing/images/bluetooth-audio-device-filter.png new file mode 100644 index 000000000..013d2d692 Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-device-filter.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-devices.png b/docs/modules/manual-testing/images/bluetooth-audio-devices.png new file mode 100644 index 000000000..c0a14ca3c Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-devices.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-file-finder.png b/docs/modules/manual-testing/images/bluetooth-audio-file-finder.png new file mode 100644 index 000000000..447101ee6 Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-file-finder.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-injecting.png b/docs/modules/manual-testing/images/bluetooth-audio-injecting.png new file mode 100644 index 000000000..c58b18b08 Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-injecting.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-injection-closeup.png b/docs/modules/manual-testing/images/bluetooth-audio-injection-closeup.png new file mode 100644 index 000000000..7715239f1 Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-injection-closeup.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-injection-empty.png b/docs/modules/manual-testing/images/bluetooth-audio-injection-empty.png new file mode 100644 index 000000000..effcbb61b Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-injection-empty.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-injection-uploaded.png b/docs/modules/manual-testing/images/bluetooth-audio-injection-uploaded.png new file mode 100644 index 000000000..e9b27e19f Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-injection-uploaded.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-not-enabled.png b/docs/modules/manual-testing/images/bluetooth-audio-not-enabled.png new file mode 100644 index 000000000..0e908f6c2 Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-not-enabled.png differ diff --git a/docs/modules/manual-testing/images/bluetooth-audio-session-overview.png b/docs/modules/manual-testing/images/bluetooth-audio-session-overview.png new file mode 100644 index 000000000..2214c4731 Binary files /dev/null and b/docs/modules/manual-testing/images/bluetooth-audio-session-overview.png differ diff --git a/docs/modules/manual-testing/images/device-controls-context3.png b/docs/modules/manual-testing/images/device-controls-context3.png index d11f99efa..bcbddda11 100644 Binary files a/docs/modules/manual-testing/images/device-controls-context3.png and b/docs/modules/manual-testing/images/device-controls-context3.png differ diff --git a/docs/modules/manual-testing/images/image-injection-closeup.png b/docs/modules/manual-testing/images/image-injection-closeup.png index cde1b05c3..5d0a25974 100644 Binary files a/docs/modules/manual-testing/images/image-injection-closeup.png and b/docs/modules/manual-testing/images/image-injection-closeup.png differ diff --git a/docs/modules/manual-testing/images/image-injection-completed.png b/docs/modules/manual-testing/images/image-injection-completed.png new file mode 100644 index 000000000..d73cd2ffe Binary files /dev/null and b/docs/modules/manual-testing/images/image-injection-completed.png differ diff --git a/docs/modules/manual-testing/images/media-injection.png b/docs/modules/manual-testing/images/media-injection.png new file mode 100644 index 000000000..beb4ac7d5 Binary files /dev/null and b/docs/modules/manual-testing/images/media-injection.png differ diff --git a/docs/modules/manual-testing/nav.adoc b/docs/modules/manual-testing/nav.adoc index 13e42f446..469349507 100644 --- a/docs/modules/manual-testing/nav.adoc +++ b/docs/modules/manual-testing/nav.adoc @@ -11,6 +11,7 @@ * Local or private devices ** xref:manual-testing:local-devices/capture-network-payload-data.adoc[] ** xref:manual-testing:local-devices/use-apple-pay-in-manual-session.adoc[] +** xref:manual-testing:local-devices/inject-audio.adoc[] * xref:manual-testing:test-your-app-camera.adoc[] * xref:manual-testing:adb-commands.adoc[] diff --git a/docs/modules/manual-testing/pages/device-controls.adoc b/docs/modules/manual-testing/pages/device-controls.adoc index 0a8617101..a034fd8be 100644 --- a/docs/modules/manual-testing/pages/device-controls.adoc +++ b/docs/modules/manual-testing/pages/device-controls.adoc @@ -81,14 +81,41 @@ See xref:release-notes:all-releases/4_10.adoc#_enhanced_handling_of_sensitive_da == Image injection -To test your in-app camera, select *Image Injection*, then add an image to the injection library and select *Inject*. +[IMPORTANT] +==== +Follow xref:manual-testing:test-your-app-camera.adoc[this guide,window=read-later] for more details on how to use image injection. +==== + +To test your in-app camera, select *Media Injection*. + +image:manual-testing:media-injection.png[width=300,alt="The media injection button in a manual session."] + +Select *Image Injection*. Upload an image to the injection library and select *Inject*. + +image:manual-testing:image-injection-closeup.png[width=400, alt="A manual session with a closeup of image injection."] + +To reset the camera view after injecting an image, select *Reset Camera*. + +image:manual-testing:image-injection-completed.png[width=400, alt="The image injection menu after injecting an image, with Reset Camera visible."] + +== Audio injection [IMPORTANT] ==== -Follow xref:manual-testing:test-your-app-camera.adoc[this guide] for more details on how to use image injection. +Follow xref:manual-testing:local-devices/inject-audio.adoc[this guide,window=read-later] for more details on how to use audio injection. ==== -image:manual-testing:image-injection-closeup.png[width=500, alt="A manual session with a closeup of image injection."] +To test your microphone, select *Media Injection*. + +image:manual-testing:media-injection.png[width=300,alt="The media injection button in a manual session."] + +Select *Audio Injection*. Add an audio file to the injection library and select *Inject*. + +image:manual-testing:bluetooth-audio-injection-closeup.png[width=400, alt="A manual session with a closeup of audio injection."] + +If you see the following message, then image injection is not enabled on the device. Choose another device that xref:manual-testing:local-devices/inject-audio.adoc[has audio injection enabled], or contact Kobiton support to learn more. + +image:bluetooth-audio-not-enabled.png[width=400px,alt="Audio injection feature disabled with message indicating special setup is required"] == Power diff --git a/docs/modules/manual-testing/pages/local-devices/inject-audio.adoc b/docs/modules/manual-testing/pages/local-devices/inject-audio.adoc new file mode 100644 index 000000000..140242d4e --- /dev/null +++ b/docs/modules/manual-testing/pages/local-devices/inject-audio.adoc @@ -0,0 +1,101 @@ += Inject audio during a manual session (Beta) +:navtitle: Inject audio (Beta) + +Learn how to inject an audio file directly into a connected device during a manual session to test recording apps, voice calls, and audio handling. + +== Prerequisites + +* A private device with bluetooth audio enabled running in *Standard mode*. + +[IMPORTANT] +Bluetooth audio requires an additional _bluetooth-bridge_ server to enable. Contact Kobiton support for more details. + +* A valid audio file that meets the required format and size. + +=== Supported audio format + +|=== +| Requirement | Value + +| Container | WAV (PCM 16-bit), OGG, or MP3 +| Sample Rate | 8 kHz +| Channels | mono +| Max File Size | 30 MB +|=== + +== Inject audio + +* In the *Device List*, choose a device marked with the microphone icon and launch a *Manual Session*. + +image:bluetooth-audio-devices.png[width=768px,alt="Filtered device list showing Pixel 7 Pro and Pixel 7 with audio capability icons"] + +* In the session, open *Inject Media* and select the *Audio Injection* tab. You’ll see an empty state inviting you to *click* or *drag-and-drop* a file. The *Inject* button is disabled until a file is uploaded. + +image:bluetooth-audio-injection-empty.png[width=768px,alt="Audio injection screen showing no file selected before injection"] + +* Select the upload area to open your system file browser (e.g., *Downloads*). Highlight your audio file (e.g., `sample.wav`) and select *Open*. + +image:bluetooth-audio-file-finder.png[width=768px,alt="Finder window highlighting a selected WAV file ready for injection"] + +* Open the target application on the device (e.g., a voice recorder app or phone app) so it’s ready to capture the injected audio. + +image:bluetooth-audio-injection-uploaded.png[width=768px,alt="Audio injection screen with sample.wav file ready and inject button active"] + +* Choose *Inject*. The panel shows the status *Injecting…* above the purple action bar. On the device screen, the waveform and recording timer confirm playback is occurring. + +image:bluetooth-audio-injecting.png[width=768px,alt="Manual session screen showing the audio file sample.wav being injected into a Pixel 7 Pro"] + +* When the injection finishes, the session shows a confirmation banner: `Audio file [file_name] has been injected successfully.` + +== Reviewing session artifacts + +After the session, open xref:session-explorer:manage-sessions.adoc[Session Overview,window=read-later]. Under *Audio tracks*, you can download: + +* *Input audio*: the uploaded audio tracks. +* *Injected audio*: the audio tracks that were injected to the device. +* *Output audio*: the output audio tracks. + +image:bluetooth-audio-session-overview.png[width=768px,alt="Session summary showing audio tracks injected and details about the device and session"] + +== Tips & best practices + +* *Filter devices with bluetooth audio enabled* ++ +Filter only devices with bluetooth audio enabled by selecting *Audio* -> *Supported* in the search bar. + +image:bluetooth-audio-device-filter.png[width=768px,alt="Device filter showing the Audio capability filter with Supported selected"] + +* *Verify format before upload.* ++ +Convert the audio file to *WAV (PCM 16-bit), OGG, or MP3* and keep the file size under *30 MB*. +* *Stage the device app first.* ++ +Open the recording or target app and get it ready *before* clicking *Inject*. + +== Troubleshooting + +[cols="1,2"] +|=== +| Issue | Resolution + +| *Inject button is disabled* | Ensure a file is uploaded and that it meets the required format (WAV, OGG, or MP3) and size (≤30 MB). +| *No inject button* | Make sure the device has bluetooth audio enabled. Contact Kobiton support for more details on enabling bluetooth audio. +| *No audio recorded in the app* a| +* Unmute the microphone. + +* Make sure the target app is actively recording or listening when you click Inject. + +* Verify device volume and any in-app input settings. + +* For Android apps: Some voice recording apps require setting Bluetooth as the audio input in system settings. +|=== + +== Important notes + +* Bluetooth bridge server limits: One Mac mini host can support one Bluetooth bridge server, with up to two devices. + +* Audio output: + +** Supported: HFP (calls, Google Meet, Zoom) + +** Not supported: A2DP (YouTube, music, media playback) diff --git a/docs/modules/session-explorer/images/audio-tracks-download.png b/docs/modules/session-explorer/images/audio-tracks-download.png new file mode 100644 index 000000000..890e3f666 Binary files /dev/null and b/docs/modules/session-explorer/images/audio-tracks-download.png differ diff --git a/docs/modules/session-explorer/pages/manage-sessions.adoc b/docs/modules/session-explorer/pages/manage-sessions.adoc index eee89b74b..9f4369bf9 100644 --- a/docs/modules/session-explorer/pages/manage-sessions.adoc +++ b/docs/modules/session-explorer/pages/manage-sessions.adoc @@ -13,7 +13,7 @@ xref:session-explorer:search-for-a-session.adoc[Search for a session], then sele image:search-session-id-closeup.png[width=1000,alt="Search for a session ID"] -From the Session Overview window, users can view below mentioned information. +From the Session Overview window, users can view more details and manage the session. image:session-overview-context copy.png[width=1000,alt="A context to Session Overview"] @@ -68,4 +68,27 @@ The Applitools Eyes status is also displayed from the session list. You can ente image:session-explorer:applitools-session-list.png[width:500,alt="The Applitools Eyes status in Session Overview"] -==== \ No newline at end of file +==== + +=== Download audio tracks and metadata + +[IMPORTANT] +==== +Follow xref:manual-testing:local-devices/inject-audio.adoc[this guide,window=read-later] for more details on how to use audio injection. +==== + +After executing an automation session (https://github.com/kobiton/samples/tree/master/audio[sample code,window=read-later]) or a xref:manual-testing:local-devices/inject-audio.adoc[manual session,window=read-later] with bluetooth audio enabled, you can download the audio tracks and metadata under the *Download Audio Tracks* section: + +* *Input audio*: the uploaded audio tracks. +* *Injected audio*: the audio tracks that were injected to the device. +* *Output audio*: the output audio tracks. + +[NOTE] + +==== + +* Audio output capture is supported only for calls, not media apps like YouTube. + +==== + +image:session-explorer:audio-tracks-download.png[width=500,alt="The Download Audio Tracks options in Session Explorer"] \ No newline at end of file