1- # RobotLab
1+ # RobotLab [ ![ Build Status ] [ build-badge ]] [ build-status ]
22
3- [ ![ Build Status] ( https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_apis/build/status/robots-from-jupyter.robotlab?branchName=master )] ( https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_build/latest?definitionId=3?branchName=master )
3+ > A one-click installer for [ Robot Framework] [ robotframework ] ,
4+ [ JupyterLab] [ jupyterlab ] , [ Firefox] [ ] , and Friends
45
5- > Building the _ Robots from Jupyter_ Workshop Installer
6+ ## Get RobotLab
7+ Start the download now for your platform:
68
9+ ### [ Linux] [ ] | [ MacOSX] [ ] | [ Windows] [ ]
710
8- ## Build It
9- Get [ Miniconda] [ ] . Install [ anaconda-project] [ ] .
11+ > ... or view the [ release notes] [ release-notes ] .
1012
11- On OSX/Linux, run:
12- ``` bash
13- anaconda-project run build
14- anaconda-project run test
15- ```
13+ [ Linux ] : https://github.com/robots-from-jupyter/robotlab/releases/download/v2019.9.0/RobotLab-2019.9.0-Linux-x86_64.sh
14+ [ MacOSX ] : https://github.com/robots-from-jupyter/robotlab/releases/download/v2019.9.0/RobotLab-2019.9.0-MacOSX-x86_64.sh
15+ [ Windows ] : https://github.com/robots-from-jupyter/robotlab/releases/download/v2019.9.0/RobotLab-2019.9.0-Windows-x86_64.exe
16+ [ release-notes ] : https://github.com/robots-from-jupyter/robotlab/releases/tag/v2019.9.0
17+
18+ ## Install RobotLab
19+ > You'll want at least 2GB available to install and run RobotLab
20+
21+ - On Windows, double-click the installer
22+ - We recommend:
23+ - _ don't_ add RobotLab to your ` PATH `
24+ - _ don't_ register RobotLab's python
25+ - On Linux/MacOSX
26+ - ` bash RobotLab-*.sh `
27+ - follow the prompts
28+ - _ don't_ install into your shell
29+
30+ > ** Remember** where you install RobotLab!
31+ >
32+ > We recommend someplace
33+ - ** short** , e.g. ` C:\robotlab ` or ` /home/myuser/robotlab `
34+ - with ** no spaces** in the path, e.g. ~~ ` c:\Robot Lab ` ~~
35+ - ** not shared** on something like Dropbox, or a network drive
36+
37+
38+ ## Run RobotLab
39+ During installation, RobotLab will try to create a desktop icon:
40+ <img width =" 32 " src =" ./robotlab/src/robotlab/icons/lab.svg " style =" float " />
41+
42+ ### _ There is an icon on my desktop/menu_
43+ Click it to launch the RobotLab server in a console window. It will also attempt
44+ to launch the bundled Firefox. The application log will keep running in the
45+ background, and sometimes useful information will appear there.
1646
17- On Windows, run:
47+ ### _ Nope, no icon here_
48+ If you don't see an icon, launch a console, e.g. ` bash ` on Linux/MacOSX or
49+ ` cmd.exe ` on Windows.
50+
51+ | | Linux/MacOSX | Windows
52+ | --| -|
53+ | start a prompt | open your terminal or console application | open ` cmd.exe ` from the start menu |
54+ | activate the robotlab environment | type ` source /path/to/robolab/bin/activate ` <br /> press <kbd >ENTER</kbd > | type ` c:\path\to\robotlab\Scripts\activate ` <br /> press <kbd >ENTER</kbd >
55+ | start robotlab | type ` robotlab ` <br /> press <kbd >ENTER</kbd > | type ` robotlab ` <br /> press <kbd >ENTER</kbd >
56+
57+ ## _ Still didn't work_
58+ If you're still stuck, open [ an issue] [ robotlab-issues ] . There should be some
59+ template information to provide.
60+
61+ ## Advanced RobotLab Commands and Invocations
1862``` bash
19- anaconda-project run build:win
20- anaconda-project run test:win
63+ # assuming you've already `activate`d
64+ robotlab [.] # basically just jupyterlab
65+ robotlab-tutorial [.] # copy the robotkernel tutorial to this directory
66+ robotlab-examples [.] # " " " examples " " "
67+ robotlab-shortcuts
2168```
2269
23- ## Motivation
70+ ## Uninstall RobotLab
71+ - Delete the installation directory.
72+ - Delete any desktop shortcuts.
73+ - That is all.
2474
75+ ## Motivation
2576While [ Robot Framework] [ robotframework ] has no dependencies beyond the Python
2677standard library, using it for non-trivial testing or process automation usually
27- requires a fair amount of additional Python dependencies, and even some more
28- exotic ones.
29-
30- The focus of this workshop, running Robot tests and tasks interactively with
31- [ robotkernel] [ ] , requires the Jupyter stack, and to demonstrate some of its more
32- advanced features, some fairly extensive extra libraries from both the Robot
33- Framework and the scientific Python ecosystems.
34-
35- To make a three-hour workshop reasonable, this repo uses [ conda] [ ] and
36- [ constructor] [ ] to build single-file installers for multiple platforms, reducing
37- the per-participant install time to a minimum, and make sneaker-net distribution
38- possible in the event that network problems arise.
78+ requires a fair number of additional Python dependencies, and even some more
79+ exotic ones. We wanted to run a workshop for [ RoboCon] [ ] 2019 and show interactive
80+ editing/running with [ robotkernel] [ ] .
81+
82+ The focus of this workshop, running Robot tests and tasks interactively, required
83+ the Jupyter stack. To demonstrate some of its more advanced features, some fairly
84+ extensive extra libraries from both the Robot Framework and the scientific Python
85+ ecosystems were needed, and getting these to install smoothly on every attendee's
86+ computers can prove to be... interesting.
87+
88+ To make a three-hour workshop reasonable, we needed a distribution approach that
89+ was:
90+ - easy to start, to that we could get to the Good Stuff
91+ - cross-platform, so that everyone could follow along
92+ - self-contained, so that it could be easily removed
93+ - offline-capable, so that we could handle intermittent network access
94+ - hackable by the user, so that we could fix Surprise Features
95+
96+ > ### _ Field Notes_
97+ >
98+ > _ At our 2019 workshop, graciously hosted by [ Siili] [ ] , (whose network was super fast!)
99+ > our room full of attendees, on three distributions of Linux, two versions of MacOSX
100+ > and two versions of Windows were all up and running in under 30 minutes. We got
101+ > through all of the [ tutorial] [ ] before lunch!_
102+
103+ ## Tools
104+ RobotLab is built with:
105+ - [ conda] [ ] , an OS-agnostic package manager
106+ - [ anaconda-project] [ ] , a multi-environment manager and command executor
107+ - [ conda-build] [ ] , the conda package builder
108+ - [ constructor] [ conda-constructor ] , the installer-builder of conda packages
109+ - [ azure pipelines] [ azure-pipelines ] , a continuous integration provider
39110
40111
41112## conda packaging
42113Once it has matured, ` robotkernel ` will be available from [ conda-forge] [ ] , the
43- community-driven upstream of the Anaconda Distribution.
114+ community-driven upstream of the Anaconda Distribution, which is also built
115+ with [ constructor] [ conda-constructor ] .
44116
45- So for these installers, and supporting exmaples , we build a number of
46- dependencies.
117+ So for the RobotLab installers, and supporting examples and tutorials , we need to
118+ build a number of dependencies.
47119
48120### robotlab
49- JupyterLab's build chain has some negative externalities
121+ [ JupyterLab] [ ] 's build chain has some negative externalities
50122for end users, namely an install- or run-time dependency on NodeJS and npmjs.org
51123when using any labextensions other than the built-in set (e.g. Notebook, Terminal,
52124Console, Editor, etc.). Because, for the purposes of the workshop, we want to
@@ -57,30 +129,31 @@ debugging `nodejs` and `webpack`, we've added a few choice JupyterLab extensions
57129- ` @jupyterlab/toc ` : a table of contents pane for Markdown headers
58130- ` @jupyter-widgets/jupyterlab-manager ` : because widgets are always good
59131
60- ...and wrapped them into a conda package which exposes some command, which can
61- do most of the things ` jupyter lab ` can do.
132+ All of these are built outside of the ` conda-build ` cycle.
133+
134+ This asset, and all our dependencies, are wrapped into a conda package which
135+ exposes some useful commands, which can do most of the things ` jupyter lab ` can do,
136+ as well as create desktop shortcuts, and unpack the tutorial content.
62137
63138` robotlab ` works like ` jupyter lab ` , while ` robotlab-extension ` works like
64139` jupyter labextension ` . This isn't a toy installation: with the bundled ` nodejs ` ,
65140an intrepid user can still install any of the [ labextensions] [ ] that are
66141compatible with the version ` robotlab ` was built with: as of writing, ` 1.1.x ` .
67142
68- ## [ constructor] [ ]
69- All of the dependencies are captured in [ construct.yaml.in] [ ] . In addition to
70- everything mentioned above, you'll also find:
71-
72- In addition to required dependencies a number of extra libraries are included to
143+ ## [ constructor] [ conda-constructor ]
144+ All of the dependencies are captured in [ construct.yaml.in] [ ] .
145+ In addition to required dependencies, a number of extra libraries are included to
73146showcase some of the features of using Robot Framework interactively.
74147- ` JupyterLibrary ` for testing Jupyter clients with robotframework
75- - ` SeleniumLibrary ` for controlling browsers
76- - ` geckodriver ` for interacting with Mozilla Firefox 57+
148+ - ` SeleniumLibrary ` for controlling browsers
149+ - ` geckodriver ` for interacting with...
150+ - ` firefox ` , the open source web browser
77151- ` opencv ` for image-driven testing
78- - ` robotframework-lint ` for helping you write clean robot syntax
79152- ` RESTInstance ` for testing REST APIs, including swagger
80153
81154## On Browsers and WebDrivers
82155RobotLab includes Mozilla Firefox and ` geckodriver ` , with versions that will be
83- supported for _ years_ , not _ months _ , by a team that is committed to open source
156+ supported for _ years_ , not _ weeks _ , by a team that is committed to open source
84157and web standards.
85158
86159### webdriver for Microsoft Internet Explorer
@@ -92,14 +165,51 @@ It's pretty easy to [get `webdriver`][webdriver] for Microsoft Edge, but...
92165It's also pretty easy to get [ chromedriver] [ ] for Google Chrome, but...
93166 - it has to match the version of Chrome exactly
94167
168+ # Work On RobotLab
169+ Contributions are welcome! See the [ issues] [ ] for outstanding work we've been
170+ discussing.
171+
172+ > - Get [ Miniconda] [ ]
173+ > - Install [ anaconda-project] [ ]
174+ > - Clone [ this repo] [ robotlab ]
175+
176+ From the command line e.g. ` bash ` or ` cmd.exe ` or the ` Anaconda Prompt ` , run:
177+ ``` bash
178+ anaconda-project run build:lab
179+ anaconda-project run build
180+ ```
181+
182+ ## Test Robotlab
183+ ``` bash
184+ anaconda-project run test
185+ ```
186+
187+ ## Checking RobotLab
188+
189+ ``` bash
190+ anaconda-project run lint
191+ anaconda-project run integrity
192+ ```
193+
95194[ anaconda-project ] : https://github.com/anaconda-platform/anaconda-project
195+ [ azure-pipelines ] : https://azure.microsoft.com/en-us/services/devops/pipelines/
196+ [ build-badge ] : https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_apis/build/status/robots-from-jupyter.robotlab?branchName=master
197+ [ build-status ] : https://dev.azure.com/robots-from-jupyter/robots-from-jupyter/_build/latest?definitionId=3?branchName=master
198+ [ chromedriver ] : https://chromedriver.chromium.org/downloads
199+ [ conda-build ] : https://github.com/conda/conda-build
200+ [ conda-constructor ] : https://github.com/conda/constructor
96201[ conda-forge ] : https://github.com/conda-forge
97- [ robotframework ] : https://github.com/robotframework/robotframework
98202[ conda ] : https://github.com/conda/conda
99- [ constructor ] : https://github.com/conda/constructor
100203[ construct.yaml.in ] : ./constructor/construct.yaml.in
204+ [ Firefox ] : https://www.mozilla.org/en-US/firefox/
205+ [ jupyterlab ] : https://jupyterlab.readthedocs.io
101206[ labextensions ] : https://www.npmjs.com/search?q=keywords:jupyterlab-extension
102207[ Miniconda ] : https://conda.io/miniconda.html
208+ [ RoboCon ] : https://robocon.io
209+ [ robotframework ] : https://github.com/robotframework/robotframework
103210[ robotkernel ] : https://github.com/robots-from-jupyter/robotkernel
211+ [ robotlab ] : https://github.com/robots-from-jupyter/robotlab
212+ [ robotlab-issues ] : https://github.com/robots-from-jupyter/robotlab/issues
213+ [ Siili ] : https://siili.com
214+ [ tutorial ] : https://github.com/robots-from-jupyter/robotkernel/tree/master/docs/notebooks
104215[ webdriver ] : https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/#downloads
105- [ chromedriver ] : https://chromedriver.chromium.org/downloads
0 commit comments