Giter Club home page Giter Club logo

robotlab's Introduction

RobotLab: Building the Robots from Jupyter Workshop Installer

Build It

Get Miniconda. Install anaconda-project.

On OSX/Linux, run:

anaconda-project run build
anaconda-project run test

On Windows, run:

anaconda-project run build:win
anaconda-project run test:win

Motivation

While Robot Framework has no dependencies beyond the Python standard library, using it for non-trivial testing or process automation usually requires a fair amount of additional Python dependencies, and even some more exotic ones.

As the focus of this workshop, using robotkernel requires the Jupyter stack, and to demonstrate some of its more advanced features, some fairly extensive extra libraries from both the Robot Framework and the scientific Python ecosystems.

To make a three-hour workshop reasonable, this repo uses conda and constructor to build single-file installers for multiple platforms, reducing the per-participant install time to a minimum, and make sneaker-net distribution possible in the event that network problems arise.

conda packaging

Once it has matured, robotkernel will be available from conda-forge, the community-driven upstream of the Anaconda Distribution. However, in the name of efficiency, conda-forge builds noarch: python packages, which are not compatible with constructor's multiplatform magic.

So for these installers, we build (or rebuild) a number of dependencies, such as robotframework 3.1 and SeleniumLibrary 3.2.0.

TODO: automated detection and re-arching of packages from conda-forge feedstocks

robotlab

While still pre-1.0, JupyterLab's build chain has some negative externalities for end users, namely an install- or run-time dependency on NodeJS and npmjs.org when using any labextensions other than the built-in set (e.g. Notebook, Terminal, Console, Editor, etc.). Because, for the purposes of the workshop, we want to get to the Good Stuff of running Robot notebooks and not spend a bunch of time debugging nodejs and webpack, we've added a few choice JupyterLab extensions:

  • jupyterlab_robotmode: syntax highlighting for Robot Framework
  • @jupyterlab/toc: a table of contents pane for Markdown headers
  • @jupyter-widgets/jupyterlab-manager: because widgets are always good

...and wrapped them into a conda package which exposes some command, which can do most of the things jupyter lab can do.

robotlab works like jupyter lab, while robotlab-extension works like jupyter labextension. This isn't a toy installation: with the bundled nodejs, an intrepid user can still install any of the labextensions that are compatible with the version robotlab was built with: as of writing, 0.35.x.

All of the dependencies are captured in construct.yaml.in. In addition to everything mentioned above, you'll also find:

In addition to required dependencies a number of extra libraries are included to showcase some of the features of using Robot Framework interactively.

  • JupyterLibrary for testing Jupyter clients with robotframework
    • SeleniumLibrary for controlling browsers
      • geckodriver for interacting with Mozilla Firefox
      • python-chromedriver-binary for interacting with Chromium and Google Chrome
      • it's pretty easy to get webdriver for Microsoft Edge, but can't be redistributed

  • opencv for image-driven testing
  • robotframework-lint for helping you write clean robot syntax

robotlab's People

Contributors

azure-pipelines[bot] avatar bollwyvl avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.