Skip to content

Commit 058ab38

Browse files
bollwyvldatakurre
authored andcommitted
Post release updates (#48)
* update readme with 2019.9.0 info * bump to next version * hedgehogs, not herring * wait until page contains hello, because rfjl wait until kernel is idle is busted
1 parent f929b84 commit 058ab38

File tree

8 files changed

+161
-53
lines changed

8 files changed

+161
-53
lines changed

README.md

Lines changed: 154 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,124 @@
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
2576
While [Robot Framework][robotframework] has no dependencies beyond the Python
2677
standard 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
42113
Once 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
50122
for end users, namely an install- or run-time dependency on NodeJS and npmjs.org
51123
when using any labextensions other than the built-in set (e.g. Notebook, Terminal,
52124
Console, 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`,
65140
an intrepid user can still install any of the [labextensions][] that are
66141
compatible 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
73146
showcase 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
82155
RobotLab 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
84157
and 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...
92165
It'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

azure-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ trigger:
88
pr: [master]
99

1010
variables:
11-
ROBOTLAB_VERSION: 2019.9.0
11+
ROBOTLAB_VERSION: 2019.9.1
1212
PYTHONUNBUFFERED: 1
1313

1414
jobs:

recipes/robotlab/meta.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
package:
99
name: {% set name = "robotlab" %}{{ name }}
10-
version: {% set version = "2019.9.0" %}{{ version }}
10+
version: {% set version = "2019.9.1" %}{{ version }}
1111

1212
source:
1313
- path: ../../robotlab

robotlab/setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = robotlab
3-
version = 2019.9.0
3+
version = 2019.9.1
44
description = A pre-configured JupyterLab for demonstrating robotkernel
55
long_description = file: README.md
66
url = https://github.com/robots-from-jupyter/robotlab

robotlab/src/robotlab/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = "2019.9.0"
1+
__version__ = "2019.9.1"

scripts/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
README = ROOT / "README.md"
3333

3434
# for easy overriding in CI
35-
VERSION = os.environ.get("ROBOTLAB_VERSION", "2019.9.0")
35+
VERSION = os.environ.get("ROBOTLAB_VERSION", "2019.9.1")
3636
PY_MAX = os.environ.get("PY_MAX", "3.7.0a0")
3737
PY_MIN = os.environ.get("PY_MIN", "3.6")
3838
LABEXTENSIONS = os.environ.get(

tests/acceptance/2_RobotLab/10_IPython_Notebook.robot

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,8 @@ Can RobotLab make an IPython Notebook?
1313
Capture Page Screenshot ${prefix}_01_notebook.png
1414
Add and Run JupyterLab Code Cell print("Hello" + " World")
1515
Capture Page Screenshot ${prefix}_02_execute.png
16-
Sleep 2s
17-
Wait Until JupyterLab Kernel Is Idle
16+
Wait Until Page Contains Hello World timeout=10s
1817
Capture Page Screenshot ${prefix}_03_execute_result.png
19-
Page Should Contain Hello World
2018
Execute JupyterLab Command Save Notebook
2119
Sleep 2s
2220
Capture Page Screenshot ${prefix}_09_save.png

tests/resources/Install.robot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Library Process
55
Library JupyterLibrary
66

77
*** Variables ***
8-
${INSTALLER VERSION} 2019.9.0
8+
${INSTALLER VERSION} 2019.9.1
99
${INSTALLER DIR} ${OUTPUT DIR}${/}..${/}constructor
1010
${INSTALL LOG} ${OUTPUT DIR}${/}${OS}${/}00_installer.log
1111
&{ROBOTLAB GECKODRIVER} linux=bin${/}geckodriver darwin=bin${/}geckodriver windows=Scripts${/}geckodriver.exe

0 commit comments

Comments
 (0)