You should be able to drop this into your Cucumber 'hooks' directory, and the magic video-record-on-failure will kick in.
On Mac, this needs https://gist.github.com/sleekweasel/1aee7b339f3f6319dda0 too.
commit 0acc0d1d98e485336c3a37b599a8b052063e85a4 | |
Author: Tim Baverstock <tim.baverstock@corp.badoo.com> | |
Date: Fri May 29 18:18:36 2015 +0100 | |
Retrieve Jacoco coverage | |
diff --git a/ruby-gem/lib/calabash-android/helpers.rb b/ruby-gem/lib/calabash-android/helpers.rb | |
index c94c768..485aa31 100755 | |
--- a/ruby-gem/lib/calabash-android/helpers.rb | |
+++ b/ruby-gem/lib/calabash-android/helpers.rb |
require 'socket' | |
# Crappy REDIS for the Linux agents, to avoid having to install redis everywhere. | |
# Would have been better had I realised the manual mode wasn't the standard. | |
# NB: | |
# env.LC_ALL en_US.UTF-8 | |
class SkankyRedis | |
def initialize |
tile_emulators() { | |
DGEO=$(xdotool getdisplaygeometry) | |
index=0 | |
for p in $( xdotool search 'enymotion' getwindowpid %@|sort |uniq ) ; do | |
GEOM=$(perl -le " | |
%A=(tot=>$EMULATORS, ix=>$index, dx=>${DGEO% *}, dy=>${DGEO#* });"' | |
$sq = int(sqrt($A{tot})); $sq++ if sqrt($A{tot}) > $sq; | |
$sx=$A{dx}/$sq; $sy=$A{dy}/$sq; | |
print "windowsize $sx $sy windowmove ",($A{ix} % $sq) * $sx," ",int($A{ix} / $sq) * $sy' | |
); |
#!/bin/bash | |
# Logs to stdout, maintaining an xmessage based status. | |
# Messages starting with space are appended. | |
# Magic { & } 2>/dev/null stuff is to suppress job control noise. | |
xlog() { | |
[ -n "$XM_PID" ] && { kill $XM_PID && wait $XM_PID ; } 2>/dev/null | |
XM_STATE="$(uptime)" | |
echo === ${XM_STATE} "$*" | |
case "$*" in (' '*) XM_MESSAGE+=" |
2016-07-19 12:52:19:487 - info: [Appium] Welcome to Appium v1.5.3 (REV 62d39fdb5ec180e37b10f5dd95b647001b9b02f7) | |
2016-07-19 12:52:19:488 - info: [Appium] Non-default server args: | |
2016-07-19 12:52:19:489 - info: [Appium] port: 1235 | |
2016-07-19 12:52:19:490 - info: [Appium] sessionOverride: true | |
2016-07-19 12:52:19:490 - info: [Appium] log: '/tmp/appiumj.log' | |
2016-07-19 12:52:19:490 - info: [Appium] loglevel: 'error:debug' | |
2016-07-19 12:52:19:490 - info: [Appium] logNoColors: true | |
2016-07-19 12:52:19:537 - info: [Appium] Appium REST http interface listener started on 0.0.0.0:1235 | |
2016-07-19 12:52:30:335 - info: [HTTP] --> POST /wd/hub/session {"desiredCapabilities":{"platformName":"ios","platformVersion":"9.3","deviceName":"iPhone 6","app":"/tmp/janebumble.app","autoAcceptAlerts":false,"bundleId":"com.moxco.bumble","newCommandTimeout":305,"showIOSLog":false,"fullReset":true}} | |
2016-07-19 12:52:30:336 - info: [MJSONWP] Calling AppiumDriver.createSession() with args: [{"platformName":"ios","pla... |
echo This task runs after the reboot task, as a buffer between the reboot script and the real reboot. | |
echo That is, THIS task will get all the INTERRUPTED errors, not the real scripts. | |
# Note: This script depends on the host machine's reboot process removing the 'rebooting=true' line from the buildAgent.properties | |
# See the plist in this gist, or add it to your rc.local. | |
echo Uptime: | |
uptime | |
echo Infinite loop until machine reboot, unless reboot is already complete: |
You should be able to drop this into your Cucumber 'hooks' directory, and the magic video-record-on-failure will kick in.
On Mac, this needs https://gist.github.com/sleekweasel/1aee7b339f3f6319dda0 too.
CLI video capture for iOS: the applescript uses the clickdrag tool to select the given window.
Used by https://gist.github.com/sleekweasel/227315961b0b102e82d9 for automatic recording of test execution in cucumber.
Probably, if I renamed 'videocapture.scpt' to 'videocapture.applescript' and put a #!env osascript line at the start, it would be better.
# Indices for int[4] rectangles. | |
X0 ||= 0 | |
Y0 ||= 1 | |
X1 ||= 2 | |
Y1 ||= 3 | |
# Calculate clipped and obscured areas based on lists of orthogonal rectangles. | |
class Bounds | |
def initialize(r) |