Since the horizon remove the 'run_tests.sh' file,
so there should remove '.venv' from the '.gitignore' file.
See the patch 'https://review.openstack.org/#/c/399842/'
Change-Id: I575481aa39a2f750f64a534e8021d9dfaf71bb98
This commit adds a eslint tox environment, that installs eslint and
checks muranodashboard js code against it.
Eslint is the current linter of choice for horizon, because it is
capable of detecting both style and syntax errors (and does not have
license limitations of jshint).
To run: tox -e eslint
Partially implements: blueprint add-js-lint-jobs
Change-Id: I645f279ab6ac45b7d1d872ded803c126dd0a10e7
Implements blueprint murano-as-horizon-plugin
* Use prepare_murano.sh to add murano to the horizon automatically
* Or add _50_murano.py manually under openstack_dashboard/enabled directory
* settings.py is no longer tracked and needed to be syncronized
with current horizon version
* Murano panel order can be changed by renaming prefix _50 to the desired positon
Change-Id: I26e15bae5d62fba2f83d8792e888897674cab8e1
This patch allows to run functional tests under devstack
Rename muranodashboard/test to muranodashboard/tests
Partly-Closes-Bug: #1349383
Change-Id: I70ac476cce9e037b8f36872dde3c1825ca6e3a04
* Reduce amount of time waiting for element that doesn't exist
* Improve some xpaths
* Fix screenshot taking to happen only on fail
* Add config file to .gitignore
* Testcase for checking integer field was removed since
it checks library code, not Murano
* Generates test package archive with different fqns
* Use muranoclient insted of request module
* Maximaze browser window before test execution
* Use consts.py instead of common.ini to keep xpaths
After this patch app-incubator is not needed for test run
Closes-Bug: #1343210
Change-Id: Ied6390b5aed6421182a2f2e3a825e079cfef4591
1. Show only selected service description in Create Service step0
form.
2. Move template names and params postprocessing into service forms.
3. Move all forms post-processing (before passing to api) into
declarative specs. All post-processing is actually performed in
extract_attributes form functions according to attributeNames
attr. for each field in each form.
4. Support generation of multiple forms (steps) from one service
definition.
5. Dynamic forms UI use services yaml-description.
6. Use predefined field types instead of eval-ing python object
names. Also use camelCased names instead of pythonic_ones.
7. Localize string values for predefined keys and do not use string
prefix.
8. Add verify password fields automatically for each password field.
9. Use attributeNames for each field description instead. Value of
attributeNames can be:
* list - field value will propagated to multiple attributes;
* omitted - field value will be propagated to attribute with same
name;
* false - field value won't be propagated to any attribute;
* string - field value will be propagated to attribute whose name is
specified by the string, with one note: `attributeNames: domain.x'
for field `A' will produce attribute value `domain: {x: A.value}'
10. Remove django template from service description. Use per-field
descriptions. If the field in service's description has attribute
`description', it is automatically inserted into appropriate form
description. If `descriptionTitle' attribute is present, it becomes
the title of field description, else `label' attribute is used.
11. Also in addition to an existing regexp literal (quoted string) add
new one: quoted string with slashes: '/some-regexp/flags'. Flags is
split into list of 1-letter strings <flag>, each of them is uppercased
to <FLAG> and sent to re.compile as getattr(re, <FLAG>).
Change-Id: I76c25cbbd682823cbef2693b51ccd69ffe83b6d4