Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View sleekweasel's full-sized avatar

TimBav sleekweasel

  • Badoo
  • Luton/London UK
View GitHub Profile
@sleekweasel
sleekweasel / bounds.rb
Last active July 6, 2018 16:26
More advanced Android Calabash system notifications handling, per https://techblog.badoo.com/blog/2015/06/01/testing-android-notifications-with-calabash/
# 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)
@sleekweasel
sleekweasel / README.md
Last active January 5, 2017 15:11
Videocapture applescript needs clickdrag.m to do its mouse clicking.

CLI video capture for iOS: the applescript uses the clickdrag tool to select the given window.

  • To start recording Simulator: osascript videocapture.scpt start Simulator 1 /Users/username/bin/clickdrag
  • To stop recording and save movie: osascript videoccapture.scpt stop /Users/username/Movies/somename
  • To stop recording without saving movie: osascript videocapture.scpt stop

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.

@sleekweasel
sleekweasel / README.md
Last active February 10, 2019 11:44
Hooks for recording video of cucumber tests
@sleekweasel
sleekweasel / Dependent await reboot complete task
Last active May 12, 2016 04:11
TeamCity - reboot dependency
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:
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...
#!/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+="
@sleekweasel
sleekweasel / xdotool tile matching windows
Last active February 21, 2018 15:42
Tile X11 windows from the command-line with xdotool
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'
);
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
@sleekweasel
sleekweasel / patch
Created January 30, 2017 10:05
~/git/calabash-android (master)$ git show 0acc0d1d98e485336c3a37b599a8b052063e85a4 > patch
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
@sleekweasel
sleekweasel / session
Last active February 1, 2017 17:02
SLES/Docker locale issue caused by missing mkdir /usr/lib/locale and needing to re-start bash
9f2a7296bd3e:/ # zypper in glibc-i18ndata
9f2a7296bd3e:/ # localedef -v -c -i en_GB -f UTF-8 en_GB.UTF-8
/usr/share/i18n/locales/en_GB:23: non-symbolic character value should not be used
/usr/share/i18n/locales/en_GB:24: non-symbolic character value should not be used
/usr/share/i18n/locales/en_GB:25: non-symbolic character value should not be used
/usr/share/i18n/locales/en_GB:26: non-symbolic character value should not be used
/usr/share/i18n/locales/en_GB:27: non-symbolic character value should not be used
/usr/share/i18n/locales/en_GB:30: non-symbolic character value should not be used
/usr/share/i18n/locales/en_GB:31: non-symbolic character value should not be used
/usr/share/i18n/locales/en_GB:32: non-symbolic character value should not be used