GithubHelp home page GithubHelp logo

osbuild / cockpit-composer Goto Github PK

View Code? Open in Web Editor NEW
60.0 18.0 49.0 22.83 MB

Composer generates custom images suitable for deploying systems or uploading to the cloud. It integrates into Cockpit as a frontend for osbuild composer

License: MIT License

JavaScript 93.09% CSS 0.32% Shell 0.93% Makefile 1.89% Python 3.64% HTML 0.12%
cockpit cockpit-composer

cockpit-composer's People

Contributors

alansill avatar allisonkarlitskaya avatar andreasn avatar atodorov avatar bcl avatar chloenayon avatar clumens avatar cockpituous avatar croissanne avatar dashea avatar dependabot[bot] avatar evan-goode avatar henrywang avatar jelly avatar jgiardino avatar jkozol avatar kkoukiou avatar larskarlitski avatar lucasgarfield avatar martinpitt avatar marusak avatar mvollmer avatar ochosi avatar ondrejbudai avatar petervo avatar regexowl avatar stefwalter avatar teg avatar weblate avatar wgwoods avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cockpit-composer's Issues

Unable to add package to newly created recipe in Cockpit mode

Description of problem

I'm unable to add packages to a recipe when running in cockpit mode (http://localhost:9090/welder). Things work fine when running standalone (http://localhost:3000).

Version or commit hash (if applicable)

Current master (147cf6e)

How often reproducible

Always

Steps to Reproduce

  1. Make sure to run an API server that has package metadata. (Container or standalone) I do this with make metadata.db and mkdir /tmp/r; bdcs-api-server --log /tmp/log.json --port 4000 ./metadata.db /tmp/r
  2. Go to http://localhost:9090/welder
  3. Create a new recipe
  4. Click on the + sign of the first package (389-ds-base)
  5. Select the second package (389-ds-base-devel) and Click the blue "Add" button

Actual results

  1. Nothing happens aside from changing the + to a -, but the recipe does not get the package added.

  2. Nothing happens (recipe does not get the package added), and JS console shows errors:

Error fetching metadata for 389-ds-base-devel  main.js:64671
TypeError: listItem is undefined

Expected results

4./5. Package gets added to the recipe, like in standalone mode.

No feedback if I input a string that doesn't match anything in the filter

Description of problem

I was searching for the package gnome-photos to add to my build, but apparently that package isn't packaged in my current OS (RHEL). There is no feedback that it couldn't match the string though, so it makes me think that maybe something broke with the UI.

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Hit Edit Blueprint
  2. Under Available Components, search for gnome-photos
  3. Try to hit enter to do the search

Actual results

Nothing happens when I hit the return key

Expected results

I would expect it to give me some hint that the string didn't match anything. Maybe the input box could turn red.
screenshot from 2018-06-28 15-13-41

cached recipe doesn't work for recipe names with spaces

Description of problem

RecipeAPI caches the recipe, so that if the same recipe contents are requested a second time, then the cached contents are used, instead of fetching them again. This does not appear to work for recipes that have spaces in the name, e.g. "Corporate Webserver"

Component (web, API, etc)

web

How often reproducible

Always

Steps to Reproduce

  1. Navigate to the recipes page (list of recipes)
  2. Click the kebab for a recipe and select Export
  3. A modal opens and a spinner displays in place of the recipe contents while the contents are fetched. When the contents are available, they'll display in a text area.
  4. Close the modal, then select Export for the same recipe.

Actual results

If the recipe name has no spaces, then the contents are loaded immediately.
If the recipe name has spaces, then the spinner displays, indicating that the full fetch function is being executed, instead of just returning the cached recipe contents.

Expected results

Cached recipe contents should be returned regardless of the recipe name format.

I'm offered to export, even though there is nothing to export

Description of problem

Similar to issue #254. I'm offered to Export the image, even though it's empty and there is nothing to export.

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Go to the overview page
  2. Hit the kebab menu
  3. Hit Export
  4. There is nothing to export

Actual results

The Export menu item is active

Expected results

The Export menu item is inactive

Additional info

screenshot from 2018-06-28 13-07-21

screenshot from 2018-06-28 13-05-57

/modules/list/** should only have 1 *

When the UI requests a list of all the modules it is currently sending '**' instead of a single '', this can cause the API server to run slower than it should (the code detects '' and uses SQLite to do the offset and limit of the query).

Recipes page sort order

Description of problem

Recipes should be sorted alphabetically, based on the order specified by the sort order toolbar action. However, currently any recipe that was opened for viewing or editing will be listed last on the Recipes page. And the action in the toolbar does not control the sort order.

Component (web, API, etc)

web

Version or commit hash (if applicable)

How often reproducible

always

Steps to Reproduce

  1. Navigate to the Recipes page
  2. Click the A>Z icon to toggle the sort order to Z>A

Actual results

Nothing happens.

Expected results

The sort order should change to Z>A.

Additional info

This was fixed in #140 but is not working in #162.

Image created from blueprints page not displaying for 60s

Description of problem

When creating an image before the blueprint contents have been loaded, the image will not display in the list of images until the next api poll (60s).

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. On session start, create an image from the blueprints page.
  2. Navigate to the blueprint page for the blueprint the image was created for.

Actual results

The image appears in the images list 60s after it was created.

Expected results

The image appears in the images list immediately after it was created.

Additional info

mock api and recipe-api.json

When I'm using the mock api and navigate to the Recipes page, I see two list items display for each recipe defined in the file public/json/recipe-api.json. The first is always a blank list item and the second displays the data defined for the recipe.

In the example below, I created two instances of the "example" recipe in the recipe-api.json file which produces two list items for each recipe:

screen shot 2016-12-13 at 11 46 38 am

Error handling in Create Recipe on closing dialog

Description of problem

There are two form-level error messages that can display above the form. If one of these messages is visible when you hit the Close (X) or Cancel buttons, then the message is cleared from the dialog on close. But if you close the dialog by clicking outside the modal or hitting the Esc key, the messages remain visible for a moment the next time the modal is opened.

NOTE:

  • form-level message refers to the message that displays above the form
  • field-level message refers to the message that displays below a form field

Component (web, API, etc)

web

Version or commit hash (if applicable)

How often reproducible

everytime

Steps to Reproduce

  1. Open Create Recipe dialog
  2. Get one of the form-level messages to display, for example:
    • leave the Name field empty and click the Save button, or
    • enter an existing recipe name in the Name field, and click the Save button
  3. Hit the Esc key or click outside the modal to dismiss the dialog
  4. Click the Create Recipe button

Actual results

The form-level message appears initially then is removed from the dialog

Expected results

The form-level message should never display when a new instance of the dialog is opened.

However, the field-level message for duplicate recipe names could display for the Name field, since values entered in the form are persistent for that user session until the Save button is clicked or they're manually cleared by the user. I.e. if I enter a value for Name and close the dialog, I'll see that value persist the next time I open the dialog, along with any field-level error messages associated with the value.

Additional info

Very ugly screen flickering when paging through components

Description of problem

At the Edit Recipe page I have a list of components (aka RPM packages) which is paged. When I click the next button there is an ugly flickering as the whole screen resizes for about a second. I think the reason is that when the button is clicked the area displaying available elements is cleared and it is blank untill the next page is loaded from the API. When the area is filled with components they occupy a slightly bigger area (+10px or so) which causes the browser to resize everything.

Please see the video for more info:
https://www.youtube.com/watch?v=SLpEaYN_ynI

Image list order changes

Description of problem

The order images are listed in changes when the API is polled to check the image status every 60s.

Component (web, API, etc)

web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Create an image
  2. Wait 30s
  3. Create a second image

Actual results

Image 1 will display at the top of the list for 60s then image 2 will display at the top for 30s and they will continue to swap positions every 30s as one of them gets their status updated from the API.

Expected results

Images sort by the order they were created in.

Additional info

Update Tabs components

The current implementation of Tabs is based on the source code for an old patternfly-webcomponents implementation. But a newer Tabs component in patternfly-react is available and should be used instead.

As part of this issue:

  • I think we can remove anything related to webcomponents from webpack.config.js.
  • The entire Tabs folder should be removed
  • The patternfly-react Tabs component can replace all instances of the Tabs component, which occurs in the following pages/files:
    • Blueprint page, pages/blueprint/index.js
      image
    • Blueprint contents, components/ListView/BlueprintContents.js
      • This UI displays in two places:
        • On Blueprint page, click Selected Components tab. This tab has a second set of tabs as shown below:
          image
        • On Edit Blueprint page, in the Blueprint Components panel:
          image
    • Component details view, components/ListView/ComponentDetailsView.js
      • These tabs use the patternfly style
      • This UI displays in two places:
        • On Blueprint page, click Selected Components tab, then click the name of a component in the list view. This will display the component details view.
        • On Edit Blueprint page, click any component name (in either Available Components or Blueprint Components panels) to display the details view.
          image

Additionally, there are some enhancements and issues that this update might address. If not, we should capture these as separate issues:

Enhancement: When applying filters to blueprint contents, if the Dependencies tab is selected, and additional filters are applied, then the active tab switches to the Selected Components tab. Ideally, applying filters should not reset the tab selection.

Issue: When applying filters to blueprint contents, the numbers that display with the tab labels will update when the first filter is applied. But subsequent changes to filters (adding and removing), will not result in updates to the Dependencies tab. It's possible that switching to the patternfly-react Tabs component will address this automatically, but it not, an alternate Tab component might be needed.

local state mismatches API state due to too aggressive redux-persist caching

I think I have something weird going on with the cache in Firefox, because I get a lot of Error messages when I try to click on a recipe in the test instance.
However, when I tried this in Chrome I got the empty page, so I suspect Firefox have cached old recipes for some reason. Shift+reload doesn't quite do the trick, so there must be something else going on.

Saving Recipe never finishes (caught by `Save Recipe Test #acceptance` failure)

This particularly test fails very often:

❱❱❱ jest --verbose -i -t 'Save Recipe Test #acceptance'
 FAIL  test/test_editRecipe.js (15.147s)
  ● Edit Recipe Page › Single Word Recipe Name Scenario › Save Recipe Test #acceptance › should have toast notification pop up when Save button clicked @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  Edit Recipe Page
    Single Word Recipe Name Scenario
      Menu Nav Bar Check #acceptance
        ○ skipped 1 test
      Title Bar Check #acceptance
        ○ skipped 2 tests
      Create Composition Test For ostree #acceptance
        ○ skipped 2 tests
      Create Composition Test For iso #acceptance
        ○ skipped 2 tests
      Create Composition Test For ami #acceptance
        ○ skipped 2 tests
      Create Composition Test For qcow2 #acceptance
        ○ skipped 2 tests
      Create Composition Test For vhdx #acceptance
        ○ skipped 2 tests
      Export Recipe To Manifest Test #acceptance
        ○ skipped 4 tests
      Save Recipe Test #acceptance
        ✕ should have toast notification pop up when Save button clicked @edit-recipe-page (15018ms)

This reproduces locally and also affects Travis CI runs (example), so that otherwise valid PRs have to be force-pushed very often to re-trigger the tests.

Component version is always the same

Description of problem

Not sure if this is a real issue, maybe it's only my setup.
If I press a component in the Edit Blueprint > Available Components list, and try to select something else in the Version Release dropdown, I only ever get one version.

screenshot from 2018-06-28 14-59-19

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Click Edit Blueprint
  2. Select a component in the Available Components list
  3. Try to change Version Release

Actual results

Can't change version release

Expected results

Either for it to not display a dropdown (because there is nothing else to select), or for more versions to show up in the dropdown.

I'm offered to create an image from the frontpage, even though the blueprint is empty

Description of problem

If I'm the edit blueprint view, the Create Image button is grayed out as expected (because I have nothing to build), but if I go to the overview, there is a button to trigger the (empty) build.

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Go to the overview page listing all the blueprints
  2. Press the Create Image button

Actual results

Create Image button is active

Expected results

Create Image button is inactive

screenshot from 2018-06-28 12-58-53

screenshot from 2018-06-28 12-57-20

CSS refinements for Images list view

In the Images list view (Blueprint page, Images tab) there are a few css refinements needed to result in the layout shown in the design documentation.

These refinements include:

  • animating the icon that displays for the In Progress state
  • adjusting the layout of the status text and status icon
  • not displaying the image name as a link

Save recipe needs to provide visual indication on the screen

Description of problem

On the Edit Recipe page, when you click Save, visual indication should display communicating that save is in process and save is successful.

Component (web, API, etc)

Web

Steps to Reproduce

  1. Navigate to the Edit Recipe page
  2. Make changes (add or remove components)
  3. Click Save

Actual results

No visual change on the screen

Expected results

Visual indication in the screen that Save was clicked and save is happenening and has happened.

end-to-end tests fail when running locally

I am following the end-to-end test README to try and run these on my host, instead of building a container first and running them there (this takes a magnitude more time, and cannot be done when moving into Cockpit's tests).

"Have both bdcs-api-rs and welder-web running on localhost" → I believe I do have that. http://localhost:4000/api/v0/test works, it comes from the running API container:

4d6d4a958763        welder/bdcs-api-rs:latest   "/usr/local/bin/en..."   2 weeks ago         Up 43 minutes                 0.0.0.0:4000->4000/tcp   api

http://localhost:3000/ works as well, that's coming from an npm run start from the source tree. And yet I get nothing but failures:

❱❱❱ npm run test

> [email protected] test /home/martin/upstream/welder-web/test/end-to-end
> jest --runInBand --forceExit

(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: .wait() timed out after 30000msec
(node:810) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 4): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 5): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 6): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 7): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 8): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 9): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 10): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 11): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 12): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 13): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 14): Error: .wait() timed out after 30000msec
(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 15): Error: .wait() timed out after 30000msec
 FAIL  test/test_editRecipe.js (256.794s)
  ● Edit Recipe Page › Single Word Recipe Name Scenario › Menu Nav Bar Check #acceptance › should show a recipe name with a correct link address @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Title Bar Check #acceptance › should show a recipe name title @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Title Bar Check #acceptance › should have Create Composition button @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For ostree #acceptance › should pop up Create Composition window by clicking Create Compostion button @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For ostree #acceptance › should have toast notification pop up when new composition added @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For iso #acceptance › should pop up Create Composition window by clicking Create Compostion button @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For iso #acceptance › should have toast notification pop up when new composition added @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For ami #acceptance › should pop up Create Composition window by clicking Create Compostion button @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For ami #acceptance › should have toast notification pop up when new composition added @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For qcow2 #acceptance › should pop up Create Composition window by clicking Create Compostion button @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For qcow2 #acceptance › should have toast notification pop up when new composition added @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For vhdx #acceptance › should pop up Create Composition window by clicking Create Compostion button @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Create Composition Test For vhdx #acceptance › should have toast notification pop up when new composition added @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Export Recipe To Manifest Test #acceptance › should pop up dropdown-menu by clicking ":" button

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Export Recipe To Manifest Test #acceptance › should pop up Export Recipe window by clicking "Export"

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Export Recipe To Manifest Test #acceptance › should copy and paste correct components

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Edit Recipe Page › Single Word Recipe Name Scenario › Save Recipe Test #acceptance › should have toast notification pop up when Save button clicked @edit-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 16): Error: expect(received).toBe(expected)

Expected value to be (using ===):
  ""
Received:
  "https://github.com/weldr/welder-web/blob/master/test/end-to-end/README.md"
 FAIL  test/test_recipes.js (63.392s)
  ● Recipes Page › Recipe List › Single Word Recipe Name Scenario › Export Recipe To Manifest Test #acceptance › should copy and paste correct components

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

(node:810) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 17): Error: expect(received).toBe(expected)

Expected value to be (using ===):
  ""
Received:
  "http://localhost:4000/api/v0/test"
 FAIL  test/test_viewRecipe.js (60.7s)
  ● View Recipe Page › Single Word Recipe Name Scenario › Recipe page - Export Recipe To Manifest Test #acceptance › should copy and paste correct components

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

 FAIL  test/test_createRecipe.js (31.703s)
  ● Create Recipe Page › Input Data Validation Test › Required Field Missing #acceptance › should show alert message by clicking Save button when create recipe without name @create-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Create Recipe Page › Input Data Validation Test › Required Field Missing #acceptance › should show alert message by clicking Enter key when create recipe without name @create-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Create Recipe Page › Input Data Validation Test › Required Field Missing #acceptance › should show alert message by changing focus to description input @create-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Create Recipe Page › Input Data Validation Test › Simple Valid Input Test #acceptance › should switch to Edit Recipe page - recipe creation success @create-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Create Recipe Page › Input Data Validation Test › Simple Valid Input Test #acceptance › should switch to Edit Recipe page - recipe creation success @create-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

  ● Create Recipe Page › Input Data Validation Test › Simple Valid Input Test #acceptance › should switch to Edit Recipe page - recipe creation success @create-recipe-page

    Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
      
      at pTimeout (node_modules/jest-jasmine2/build/queueRunner.js:53:21)
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:523:19)
      at ontimeout (timers.js:471:11)
      at tryOnTimeout (timers.js:306:5)
      at Timer.listOnTimeout (timers.js:266:5)

 FAIL  test/test_importSanity.js
  ● Imported Content Sanity Testing › displayed count should match distinct count from DB

    TypeError: Cannot read property 'each' of undefined
      
      at Object.<anonymous> (test/test_importSanity.js:52:8)
          at new Promise (<anonymous>)
      at Promise.resolve.then.el (node_modules/p-map/index.js:46:16)
          at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7)

Test Suites: 5 failed, 5 total
Tests:       24 failed, 35 passed, 59 total
Snapshots:   0 total
Time:        415.246s
Ran all test suites.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] test: `jest --runInBand --forceExit`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] test script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/martin/.npm/_logs/2017-10-24T06_53_15_909Z-debug.log

What am I doing wrong? How do you developers run the integration tests?

call depsolve api when modifying recipe

Description of problem

When adding/removing components in a recipe, the list of dependencies should be updated to reflect the change in components.

Component (web, API, etc)

web

How often reproducible

always

Steps to Reproduce

Steps below are based on the updates made in #157 where a number of components is included in
the tab labels for "Selected Components" and "Dependencies".

  1. Create a new recipe
  2. Add a component. The number of dependencies displaying in the "Dependencies" tab will change.
  3. Add another component. The number of dependencies increases
  4. Click Save, then refresh the page. the number of dependencies listed in the tab will change

Actual results

The number of dependencies changes between steps 3 and 4 because different api calls and methods are being used between adding components and loading the recipe on refresh.

In step 3, the list of dependencies per component is being combined to form the list of dependencies for the recipe. This list and number of items currently comes from the api call /api/v0/modules/info/<modules> being made at steps 2 and 3.

Expected results

After adding or removing a component, the list of dependencies for a recipe should instead be generated by an api call that takes all selected components in a recipe. I think the correct api call in this case is /api/v0/projects/depsolve/<projects> with <projects> being a list of all selected components in the recipe.

Additional info

  • When viewing the component details, we make api calls to get the full set of metadata, list of dependencies, and list of builds (i.e. version-release options available for the component). For retrieving the list of dependencies for a component, I'm not sure if /api/v0/modules/info/<modules> is the right api call, or if we should use /api/v0/projects/depsolve/<projects> instead. The latter provides just a list of dependencies. The former provides a list of dependencies and additional metadata, but the same metadata is also returned with /api/v0/projects/info/<projects> which is the api call we use to get the list of builds available for a component.
  • Save currently reloads the contents of the recipe to ensure that what displays in the UI matches what's saved to the backend, but in this case the dependencies are not being passed from the api call to the UI.

Cannot show Dependencies numbers for one component at Selected Components both on Edit Recipe page and Recipe page

Description of problem

Cannot show Dependencies numbers for one component at Selected Components both on Edit Recipe page and Recipe page
There're two ways to display the numbers:

  1. Click this component to expend this component.
  2. Click right arrow button to expend this component.

Component (web, API, etc)

Web

Version or commit hash (if applicable)

How often reproducible

100%

Steps to Reproduce

  1. Select a recipe from recipe list
  2. Click the recipe link to enter into recipe page or enter into edit recipe page.

Actual results

There's no dependencies numbers in selected components.

Expected results

The dependencies number should be here without any click.

Additional info

Dependencies list looks like links, but are not clickable

Description of problem

If I look at the list of dependencies for a particular blueprint component, the dependencies look click-able, but the links doesn't lead anywhere.

Component (web, API, etc)

Web.

How often reproducible

Always

Steps to Reproduce

  1. Create a blueprint
  2. Add a component from the "Available Components" list.
  3. Under "Blueprint Components", expand that component
  4. Try to click the links under "Dependencies"

Actual results

Links doesn't work.

Expected results

For them to lead somewhere.

Upon reload, created images are not loaded

Description of problem

When a user creates an image it will display in the image list. If the user refreshes the page the image is not loaded and the image list will be empty.

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Create an image
  2. Refresh page

Actual results

The list of images is empty

Expected results

The image should be displayed in the list of images.

Additional info

No warning that lorax-composer isn't running

Description of problem

I stopped the lorax-composer service, but the builder UI happily continues as if nothing is wrong.

Component (web, API, etc)

web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Expected results

The UI should give some kind of warning this is the case.

Additional info

no feedback if I search for a string with no matches in Available Components

Description of problem

If I search for a non-existing package in RHEL, say photoshop, under Available Components, I get no feedback that there isn't any matches. This works fine under Blueprint Components though

Component (web, API, etc)

web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Edit a blueprint
  2. Search for a non-existing package, for example photoshop

Actual results

No feedback

Expected results

For it to behave in a similar way to the Blueprint Components filter

Two periods alert message in Create Recipe window.

Description of problem

When creating a recipe without name input, there'll be an alter message in page. That alter message has two periods. "Required information is missing.."

Component (web, API, etc)

Web

Version or commit hash (if applicable)

How often reproducible

100%

Steps to Reproduce

  1. Go to Recipes page.
  2. Click Create Recipe button.
  3. Click Save button.

Actual results

"Required information is missing.."

Expected results

"Required information is missing."

Additional info

alert_two_periods

Cannot clear filter when applied to inputs

Description of problem

After filtering the inputs, I should be able to click the X icon or Clear All Filters link to return to an unfiltered list of inputs. But this is not the result of these actions. Currently, the only way to return to the unfiltered list is by clearing the input field and hitting the Enter key.

Component (web, API, etc)

web

Version or commit hash (if applicable)

How often reproducible

always

Steps to Reproduce

  1. Navigate to the Edit Recipe page
  2. Specify a value in the text field for filtering the Available Components, and hit Enter
  3. Click either the X icon for the filter tag that displays or the link "Clear All Filters"

Actual results

The filter tag and link are removed from the UI, but the list of available components is not updated to include all components.

Expected results

The list of available components should now show the full set, and not the filtered set.

Additional info

The state object that stores data related to filters could also be refactored to not include unnecessary keys/properties.

Allows me to create a blueprint called "???" but then the UI breaks down pretty bad

Description of problem

I tried to create a blueprint called "???". When I press the Create button I get a 404 page.
I think there might be some limits to what you can call blueprints, but the create dialog is unable to catch those.

screenshot from 2018-06-28 14-50-00

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Press the Create Blueprint button
  2. Name the blueprint ???
  3. You get thrown to a 404 page, because you can't name your blueprints like that

Actual results

I can create the blueprint with the invalid name

Expected results

I should not be able to create blueprints with invalid names.

Available component "+" and "-" button issue.

Description of problem

The available component add or remove button should be constant after clicking Discard Changes

Component (web, API, etc)

web

Version or commit hash (if applicable)

ac8be57

How often reproducible

100%

Steps to Reproduce

  1. go to edit blueprint page.
  2. make a component change.
  3. click discard changes button.

Actual results

The "+" should be "+" and "-" should be "-".

Expected results

All "-" button changed to "+".

Additional info

"TypeError: this.recipe is undefined" crash when saving recipe

Description of problem

When running welder-web locally as per README.md, I get a crash when trying to save a recipe:

crash

The notification never finishes and just keeps spinning, and the JS console shows

TypeError: this.recipe is undefined  main.js:60620:11

Component (web, API, etc)

web

Version or commit hash (if applicable)

current master (f29dc9d)

How often reproducible

always

Steps to Reproduce

  1. git clone https://github.com/weldr/welder-web
  2. cd welder-web
  3. npm install && node run build && node run
  4. Go to http://localhost:3000
  5. Create a recipe (name "empty", but that shouldn't matter)
  6. click on "edit recipe"
  7. click on "Save" button

Actual results

Crashes like above

Expected results

Should finish saving after a second and show the green "done" notification.

Additional info

Tabs display incorrectly on Firefox

Description of problem

In Firefox, the secondary tabs will display within the set of primary tabs on the Recipe page

Component (web, API, etc)

web

How often reproducible

When navigating from the Edit Recipe page to the Recipe page.

Steps to Reproduce

  1. Open the app in Firefox
  2. Navigate to the Edit Recipe page for any recipe
  3. Click the recipe name in the breadcrumb to navigate to the Recipe page

Actual results

The tabs titled "Selected Components" and "Dependencies" will display in the primary set of tabs.

Expected results

The primary set of tabs should not include "Selected Components" or "Dependencies". These are secondary tabs that should display in the contents that display for the "Components" tab.

Additional info

I can select several blueprints from the overview page, but there are no bulk actions to apply to them

Description of problem

The blueprints on the overview page have checkboxes, but checking them doesn't really serve any function (as far as I can tell). There are no bulk actions to carry out.

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Go to the overview page
  2. Select two or more blueprints by checking their checkboxes
  3. Now what?

Actual results

All blueprints have checkboxes, but there are no bulk actions to carry out.

Expected results

Either there should be bulk actions to carry out, or no checkboxes.

Additional info

screenshot from 2018-06-28 13-32-14

core/sagas/inputs.js updateInputComponentData() is missing `yield`

Cockpit has a slightly different eslint configuration, which picked up several issues. I can resolve most of them (will send a PR soon), but one is more tricky:

ERROR in ./pkg/welder/core/sagas/inputs.jsx

/home/martin/upstream/c-welder/pkg/welder/core/sagas/inputs.jsx
  5:1  error  This generator function does not have 'yield'  require-yield

And indeed updateInputComponentData() does not call yield anywhere. I'm not deep enough into the code yet to be able to say what this does exactly, so could you have a look, please?

selected components display in list of dependencies

Description of problem

The depsolve api call which provides all packages needed for the recipe, labeled as 'dependencies'. These contents are then displayed as the dependencies, but currently the selected components are included in this list that displays as dependencies.

Component (web, API, etc)

web

How often reproducible

Whenever depsolve successfully returns a list of dependencies.

Steps to Reproduce

  1. Navigate to the recipe or edit recipe page.
  2. Note which components are listed in the Selected Components section
  3. Expand the Dependencies section

Alternatively:

  1. run this: http://devel.weld.lab.eng.bos.redhat.com/api/v0/recipes/depsolve/http-server
  2. search for one of the 'modules' in the list of 'dependencies'

Actual results

The api call returns all components in the list of 'dependencies'.
The front-end js does not currently filter out the selected components from that list.

Expected results

The api call returns all components in the list of 'dependencies', as expected.
Then the front-end js filters out the selected components from that list.

Additional info

Additionally, the UI indicates that the list of dependencies is the first-level. But really, these are the total number of dependencies. Additional discussions are needed to determine whether we should show just first level vs all vs something else. But it would be nice to have the UI at least accurately describe the contents being listed.

Only Imagemagick shows up in Selected Components

Description of problem

Only imagemagick shows up under Selected Components for me, even if I don't have any selected components at all.

Component (web, API, etc)

web

Version or commit hash (if applicable)

0.1.0 on RHEL 7

How often reproducible

Always

Steps to Reproduce

  1. Create a new blueprint
  2. Check under Selected Components

Actual results

screenshot from 2018-06-29 16-53-45

Expected results

That it would be either empty, or that the components I did select would show up.

Refactor available components

The Available Components displays in the Edit Blueprint page, and currently includes the following features:

  1. Ability to filter components by name (this is handled by an api call, given the number of components available in a source)
  2. Ability to page through the components (also handled by an api call)

Currently, the following issues exist with this panel:

  1. If an error occurs fetching available components, no indication is given in the UI. An error state message should display, similar to what was added for Blueprints and Blueprint Components in #268
    • Additionally, it would be helpful to provide suggestions on how to resolve the error. For example, I see this issue when I'm not connected to VPN, and therefore my repos can't sync. For that case, telling the user to check that their repos can sync and providing an action in the UI to restart lorax-composer would be helpful.
  2. When a filter is entered that returns no results, no indication is given in the UI. An empty state message, similar to the ones that display for other filterable contents, should display instead.
  3. A loading message was added in #248, but it should be updated to display anytime contents are being fetched. Currently, it only displays when fetching the 1st page of unfiltered contents, but not when navigating to pages and not when filtering contents.
    • When the user filters the contents, should we always maintain the 1st page of non-filtered contents in the store? This way when the filter is cleared, there isn't a need to fetch the first page again, and it can load immediately.
  4. When a filter is entered that includes a space or comma-separated values, the UI should handle these separate values in the api call.
    • For example, "emacs,vim" will currently get submitted as /api/v0/modules/list/*emacs,vim*?limit=50&offset=0 which will return only packages that end with "emacs" or start with "vim". But instead, the call should be /api/v0/modules/list/*emacs*,*vim*?...
    • The following filter values specified by the user should return the same results:
      • "x, y"
      • "x,y"
      • "x y"
  5. When a filter is entered, the results should be sorted so that all the results that start with the value are first, followed by all results that do not start with the value.
    • NOTE: this might require an update to the api itself.

upon reload, the "no blueprints" curtain will show for a short second

Description of problem

This is mostly polish, but I thought it's best to report it before I forget.
If reload the UI, I will see the message that there are no blueprints for a second before the system realizes that "oh, there is some blueprints here actually".
It creates a bit of a jarring experience.

Screencast of the problem

Component (web, API, etc)

Web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Shift+reload the overview page in the browser

Actual results

The UI blinks for a moment, showing the screen that says there are no blueprints.

Expected results

For it to not do that. Maybe showing a spinner instead.

Additional info

lack of error handling

Description of problem

No errors are handled or reported in the Web UI. Cases where an error state could display are:

  • fetching blueprints on the Blueprints page (addressed in PR #268)
  • fetching blueprint contents on the Blueprint page > Selected Components tab and Edit Blueprint page (addressed in PR #268)
  • fetching available components
  • fetching images

Error handling in Create Recipe for duplicate names

Description of problem

In the Create Recipe modal, each time a character is entered in the recipe name field, an api call for the recipe list is made. Should we just make this api call once? Or should the list just be passed to the modal as a prop?

I understand there is a case where another user creates a recipe using the same name while the current user has this dialog open and is typing. But the current implementation doesn't fully handle this case (i.e. if user 1 and user 2 type the same name at the same time, and user 2 hits save first, what would happen with the current implementation?)

Getting the recipe list on each key press seems excessive, and I wonder if we should get it once on opening the dialog (or even just passed via props)? But regardless, we should definitely get the recipe list on save to double-check the name hasn't been used in between the time the user exited the name field and clicked Save.

Component (web, API, etc)

Web

Version or commit hash (if applicable)

Introduced in PR #114

How often reproducible

Everytime

Steps to Reproduce

  1. On Recipes page, click Create Recipe
  2. Open the terminal running the bdcs-api-rs
  3. Set focus in the name field and type a character

Actual results

An api call for the list of recipes is made with each key press

Expected results

An api call is made a minimum of 2 times, once on opening the dialog (or maybe just use props) and once on Save.

Save recipe needs to save both version and release

Description of problem

Currently, the information that is provided on save is name and version, but release is not included. This means that the selected release version will not be saved with the recipe.

Component (web, API, etc)

web

Steps to Reproduce

  1. Navigate to the Edit Recipe page
  2. Find a component that has more than one version (click the component name, click the Version Release select menu to see number of available versions)
  3. Click the component name to view details.
  4. Click the Version Release select menu to select a different version and release value. (The default one is the one that displays in the popover when clicking the list item on the left, and is also most likely selected by default)
  5. Save the recipe.
  6. Reload the page.

Actual results

The default values for version and release will display.

Expected results

The selected values for version and release should display.

README needs updating

It looks like the README.md file has been copied from the framework used to build the project with. Some of the sections are still useful, like Getting started, Directory layout but others appear to be unrelated to this particular project.

@jgiardino ATM I don't know which ones can be safely deleted but I bet you do.

Packages incorrectly include themselves in their list of dependencies

Description of problem

Packages list themselves as dependencies.

Component (web, API, etc)

API

Version or commit hash (if applicable)

How often reproducible

always

Steps to Reproduce

  1. click on a package to get to the details
  2. open the list of dependencies

Actual results

notice the package itself listed here

Expected results

a package should be listed here as its own dependency

Additional info

Undo/redo removes images

Description of problem

If changes are made to a blueprint, an image is created, and the blueprint changes are undone/redone the image will appear and disappear from the images list.

Component (web, API, etc)

web

Version or commit hash (if applicable)

0.1.0

How often reproducible

Always

Steps to Reproduce

  1. Go to the edit blueprint page
  2. Make changes to the blueprint but don't commit them
  3. Create an image (it will display in the images list)
  4. Undo the blueprint changes

Actual results

The image disappears from the images list.

Expected results

The image remains in the images list since images are independent from workspace changes.

Additional info

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.