Policy: github.com/owncloud/client/wiki/OS-Support-Policy#linux • Recurrent issues when something changed upstream in the distribution mirrors / there were dep.issues • 2017: the year of Linux in the Desktop !!! tl;dr: 1 Different Distributions 8 # apt-get install owncloud-client The following packages have unmet dependencies: owncloud-client:i386 : Depends: libowncloudsync0:i386 (= 2.2.4-1.1) but it is not going to be installed Depends: libqt5keychain1:i386 but it is not going to be installed Depends: owncloud-client-l10n:i386 but it is not installable
& adapt dynamically • Req. Offer a good interface for package distribution: ‘repository descriptor’ 1:1 rel. - platform (distribution) : repository • Discover the platform (@runtime) and apply the right config
#!/usr/bin/env bash cd /etc/yum.repos.d/ wget $REPOSITORY $REPOSITORY $ $APPLICATION_EXECUTABLE'cmd' --version ownCloud version 2.3.3 (build 8294) ... $ after_install/exclude_list_test.sh ❌ - Exclusion list not placed in the right dir. ◦ ◦ ◦ ubuntu:16_04 centos:6 centos:7 Recap: centos:6 &
Lightweight: ' 5-10’ successful test runs • Scalable – Parallel runs isolated – Include new distros in the pool in a breeze (literally) • Desktop managers ≠ lightweight • Scenarios should be described as matrix – More Abstraction - e.g. .travis.yml Pros / Cons images: - ubuntu:16.10 - ubuntu:17.04 - centos:6 - centos:7 [...] env: - XFCE - UNITY - KDE_PLASMA
• Also /me needed some kind of fixtures for fast bug reproduction – Gherkin language / Easily business-translatable • Coupled interfaces + owncloudcmd ≠ the full picture Meet the Socket API • Basically I needed an interface to the running ownCloud process • Luckily, such tool is already built-in the client • Overlays: pipe info from the sync protocol state to the OS Shell Integration ( ( ( ownCloud client
-DGUI_TESTING=ON • gitlab.com/alfageme/client-GUI-tests – xvfb + imagemagick to record test results - ppl. ❤ gifs var s = require('net').Socket(); s.connect('/tmp/runtime-root/ownCloud/socket'); s.write(message + '\n'); NodeJS test-harness:
Good Interface Design: representative and explanatory names for UI items – Behavior Driven Approach • Headless browsers – People is coming up with all sorts of crazy stuff: e.g. pupeteer • Run QML (Qt) apps in-browser for e2e testing
• Get some native feel: • What ‘bout the container-limitations we just talked about? – Remember we also spoke about the coolness of the socket API? – Standalone shell integration process – communicate with it from the container $ docker run –it -d \ -v /tmp/.X11-unix:/tmp/.X11-unix \ # X11 socket -e DISPLAY=unix$DISPLAY \ # display -v $HOME/ownCloud:/root/ownCloud \ -v $HOME/.local/share/data/ownCloud:/root/.local/share/data/ownCloud \ --name owncloud-client \ alfageme/owncloud-client Connect to your X11 server in ssh-forward fashion Use your OS’s xopen() script Share your KDE Wallet Mount your local sync folder