prefecthq / ui Goto Github PK
View Code? Open in Web Editor NEWThe home of the Prefect 1 UI
Home Page: https://cloud.prefect.io
License: Other
The home of the Prefect 1 UI
Home Page: https://cloud.prefect.io
License: Other
Why
Increase our test coverage and give us increased confidence in the license store
What
Notes
Sub issue of #101
Some work done in the cloud-web-ui but will need updating
Bug Description
Since the flows and agents tiles/tabs are outside the landing loading, the components aren't receiving the apollo client refreshes they should be; this means the component's queries are being stopped but never restarted to fetch new data.
Steps To Reproduce
Browsers Tested:
Notes
Bug Description
As shown here, the task failures tile shows a red bar even if there are no errors. This was seen on https://cloud.prefect.io/prefect/flow/f4a3942d-b174-4ca1-a009-4ff35dfaf3f0?version=2.
Browsers Tested:
Notes
What and Why
I find myself experimenting a lot in the UI to test features, etc. in doing so, I sometimes want to manually place runs into various states (e.g., Scheduled
or Pending
) but the drop down lists in the UI don't always allow me to do so. In that case I find myself having to go back and forth from the GraphQL API - it would be nice if the UI didn't place any restrictions on the types of states I could set.
Why
Increase our test coverage and give us increased confidence in the auth0 store
What
Notes
Sub issue of #101
Much of the work for this is done in the cloud-web-ui repo but will need significant updating
Why
Server deployments of LogRocket are leading to a lot of noise in bug reporting.
What
Notes
where is the flow_id? I can't find it!!!
Why
Increase our test coverage and give us increased confidence in the prefect-auth nav guard/middleware
What
Notes
Sub issue of #101
Some tests and template/examples in cloud-web-ui
Bug Description
Project creation fails silently.
Steps To Reproduce
Browsers Tested:
Notes
Why
Increase our test coverage by adding unit tests for all store and middleware/navguards
What
For each store:
Notes
Tests in the cloud-web-ui repo provide a good template for the tests required.
Bug Description
^ This log is from February 14, 2020, at 7:02 PM ET - but the displayed timestamp makes it look like 7AM on an unknown day. The actual timestamp is 2020-02-15 00:02:13.916259+00
for log id 8c807c81-cdf5-46ea-a8b5-7ee265e33356
: https://cloud.prefect.io/prefect/flow-run/cdb29550-93f0-40f3-8bbf-a61b3d6031af?logId=8c807c81-cdf5-46ea-a8b5-7ee265e33356
Even the mouseover shows a 12 hour clock with no AM or PM:
It would be great to show these as 24-hour clocks, possibly with a date (at least, if in the past)
Why
A common workflow I find is to run the same thing again, with the same parameters, but on a new version (if I've registered a new version) or with a slight tweak to parameters. Currently this involves going to a previous run, copy-pasting the parameters (and context if present), going back to the main flow page, hitting the 'run' button, checking that the selected version is either 'all' or the latest one, and then pasting the parameters and hitting run.
What
Notes
The version drop-down should match the one it was run with for completeness, but I'd also accept it being set to latest.
Why
Increase our test coverage and give us increased confidence in the user store
What
Notes
Sub issue of #101
Some work done in cloud-web-ui but will need updates
When running the UI with Prefect Server, the tenant-level views show all flows/projects/flow runs/etc..., regardless of which tenant is selected. We should update the UI queries to filter based on the current tenant page being viewed, rather than relying on hasura to implicitly do this filtering.
Why
Cancelling is a Running state so will affect flow run concurrency. If we don't check for it for runs in progress then it can be confusing to users.
What
Notes
Why
The Gantt Chart is a really useful feature for understanding mapping and parallelism; the current Gantt chart is limited visually from displaying these correctly due to its lack of flexibility. In addition, the library it relies on (apexcharts) is the large package in our bundle. Removing that package by redesigning the chart in D3 will allow us to completely remove that package.
What
Notes
Why
A READMEs will help new users get acquainted with the repo and set up their JavaScript dev environments!
What
Notes
Why
Increase our test coverage and give us increased confidence in the api store
What
Notes
Sub issue of #101
Why
Right now when you scroll around on the logs screen, it always jumps back to the bottom every few seconds. This is because the logs page by default is in "live" mode. This can be toggled in the bottom right corner. This can be very disruptive, especially if you didn't realize that "Live" was a button that toggles this behavior.
What
Notes
Bug Description
I followed the steps as given in the README markdown file. After the 'npm run serve' step, the command prompt displays that "'export' is not recognized as internal or external command, operable program or batch file."
After searching on the internet about this error, I read that 'export' does not work on Windows OS (which I use), rather have to use 'set' . In which file do the changes have to made?
Steps To Reproduce
{Have followed the steps as written on the REAME.md file}
Browsers Tested:
Notes
Screenshot of the command prompt:
Currently it's pretty much impossible to put Prefect UI container behind proxy and make it serve under "/some/other/path" but not root "/".
It would be great to implement either of options:
PROXY_ADDRESS_FORWARDING
) that will respect all incoming X-Forwarding-*
headers and adjust behaviour.BASE_URL
) to communicate to the static app it's not in the root path.Why
Increase our test coverage and give us increased confidence in the tenant store
What
Notes
Sub issue of #101
Some work done in cloud-web-ui but will need updates
Why
It has no highlighting! Highlighting is really helpful for JSON, since it's finicky and easy to miss a bracket/double quote.
What
Notes
Why
The sidebar has been removed but there are still a few references.
What
Notes
Why
The gantt chart isn't currently available and should be reintroduced to assure parity with Cloud.
What
vue-apexcharts
component is added to the repoNotes
This is different from #33, where we'll overhaul the chart entirely
Bug Description
Sometimes the auth state is mismatched (invalid) when redirecting from Auth0. This is surfaced with a blank screen, which is a bad user experience
Steps To Reproduce
Browsers Tested:
Notes
Stacktrace:
vue.runtime.esm.js?2b0e:619 [Vue warn]: Error in created hook (Promise/async): "Error: Invalid state"
found in
---> <App> at src/App.vue
<Root>
warn @ vue.runtime.esm.js?2b0e:619
logError @ vue.runtime.esm.js?2b0e:1884
globalHandleError @ vue.runtime.esm.js?2b0e:1879
handleError @ vue.runtime.esm.js?2b0e:1839
eval @ vue.runtime.esm.js?2b0e:1856
Promise.catch (async)
invokeWithErrorHandling @ vue.runtime.esm.js?2b0e:1856
callHook @ vue.runtime.esm.js?2b0e:4219
Vue._init @ vue.runtime.esm.js?2b0e:5008
VueComponent @ vue.runtime.esm.js?2b0e:5154
createComponentInstanceForVnode @ vue.runtime.esm.js?2b0e:3283
init @ vue.runtime.esm.js?2b0e:3114
createComponent @ vue.runtime.esm.js?2b0e:5978
createElm @ vue.runtime.esm.js?2b0e:5925
patch @ vue.runtime.esm.js?2b0e:6516
Vue._update @ vue.runtime.esm.js?2b0e:3945
updateComponent @ vue.runtime.esm.js?2b0e:4060
get @ vue.runtime.esm.js?2b0e:4479
Watcher @ vue.runtime.esm.js?2b0e:4468
mountComponent @ vue.runtime.esm.js?2b0e:4073
Vue.$mount @ vue.runtime.esm.js?2b0e:8415
eval @ main.js?56d7:147
./src/main.js @ app~._m.js:2745
__webpack_require__ @ app~._m.js:854
fn @ app~._m.js:151
1 @ app~._m.js:3045
__webpack_require__ @ app~._m.js:854
checkDeferredModules @ app~._m.js:46
(anonymous) @ app~._m.js:994
(anonymous) @ app~._m.js:997
vue.runtime.esm.js?2b0e:1888 Error: Invalid state
at eval (auth0-spa-js.production.esm.js?9767:15)
at eval (auth0-spa-js.production.esm.js?9767:15)
at Object.eval [as next] (auth0-spa-js.production.esm.js?9767:15)
at eval (auth0-spa-js.production.esm.js?9767:15)
at new Promise (<anonymous>)
at o (auth0-spa-js.production.esm.js?9767:15)
at e.handleRedirectCallback (auth0-spa-js.production.esm.js?9767:15)
at _callee2$ (index.js?0dd8:226)
at tryCatch (runtime.js?96cf:63)
at Generator.invoke [as _invoke] (runtime.js?96cf:293)
Why
There are a few components that still contain references to the old toasted
component, which no longer exists. These should be updated to use the alert
Vuex store instead.
What
Notes
The order that flow parameters appear in the Ui seems a) to be arbitrary and b) may change on flow registration. This has a couple of drawbacks:
I have three parameters, start
, end
and environment
. If this proposal is implemented I can ensure that the ui will always present them in this order, which makes it easier for someone scheduling a flow to fill in the parameters correctly.
Currently restarting a failed flow that has failed on some mapped tasks seems wrong in the following ways:
run_count
doesn't seem to change between restartsrun_count
should up between runs.Here is a minimal flow that can reproduce this is below. Start a cloud run, it will fail on the first mapped task, but the other two will succeed. Use the 'restart' button in the top right of the UI to restart this flow-run. Note that previously successful mapped runs run again. Note that the first instance fails again, and (in the logs) run_count
is still 1
, even though the UI clearly shows multiple runs.
import prefect
@prefect.task
def task(x):
prefect.context.get('logger').info(f'x = {x} and run_count = {prefect.context.get("task_run_count")}')
if x == 0 and prefect.context.get('task_run_count') == 1:
raise prefect.engine.signals.FAIL('fail on first attempt')
else:
return x + 1
@prefect.task
def summy(xs):
return sum(xs)
with prefect.Flow('test-restarts') as flow:
list = prefect.tasks.core.constants.Constant([0,1,2])
mapped = task.map(list)
summy(mapped)
flow.register(project_name='mattk')
root@docker-desktop:/workspaces/prefect# prefect diagnostics
{
"config_overrides": {},
"env_vars": [],
"system_information": {
"platform": "Linux-4.19.104-microsoft-standard-x86_64-with-debian-10.5",
"prefect_version": "0.13.2",
"python_version": "3.7.9"
}
}
Why
Increase our test coverage and give us increased confidence in the tenant guard/middleware
What
Notes
Sub issue of #101
Some tests and template/examples in cloud-web-ui
Why
The current errors tile query times out and the tile shows no errors. This can be confusing when a flow actually has got errors.
What
Minimum:
Better:
Refactor the query to a more robust query such as task failures.
Notes
Why
Increase our test coverage and give us increased confidence in the flow nav guard/middleware
What
Notes
Sub issue of #101
No tests in cloud-web-ui but that still has good examples of middleware unit tests
Why
Since a user can sign into Cloud with a UI server, we want to make it clear that changes to an account (including payment) while working against Cloud will result in charges and are real account changes
What
Notes
Why
We need to create a new CI Pipeline for the deployment and this is a good opportunity to put Prefect CI to good use!
What
Why
There's no way to update the default Server url for all users; if the location of the API changes, anyone who visits the UI needs to update the endpoint manually via the Home page. In the previous version of Server we provided a ~/.prefect/config.toml
-level variable, server.ui.graphql_url
, which ran a small bash script to replace the interpolated endpoint in the built application. The previous solution wasn't ideal because it looked for a specific string (localhost:4200/graphql
) to replace, meaning the UI images would need to be re-pulled to change the endpoint more than once. A new solution shouldn't have this problem.
What
server_url
endpointNotes
Here's the previous script we used:
#!/usr/bin/env bash
if [ "$PREFECT_SERVER__GRAPHQL_URL" != 'http://localhost:4200/graphql' ]
then
echo "Replacing graphql references with: $PREFECT_SERVER__GRAPHQL_URL"
for i in /var/www/js/*.js; do
echo $i
sed -i -e "s,http://localhost:4200/graphql,$PREFECT_SERVER__GRAPHQL_URL,g" $i
done
fi
echo "๐พ๐พ๐พ UI running at localhost:8080 ๐พ๐พ๐พ"
nginx -g "daemon off;"
Bug Description
The details tile on the Task Run page isn't displaying in certain cases.
Steps To Reproduce
Browsers Tested:
Notes
With a new install of Prefect server (0.12.5), Firefox (78.0.2, Linux) displays "Attempting to connect..." in the API Status box. Chrome (84.0.4147.89, Linux), however, displays "Connected".
Both Firefox and Chrome to connect to the API.
I've attached a screenshot of Firefox, with the network tab open: this shows that the response from the API is 200 even though the API Status box displays "Attempting to connect...".
Here's the output of prefect diagnostics
.
{
"config_overrides": {},
"env_vars": [],
"system_information": {
"platform": "Linux-5.4.0-40-generic-x86_64-with-glibc2.29",
"prefect_version": "0.12.5",
"python_version": "3.8.2"
}
}
The flow run duration differs between the flow run page and the runs page. This may be due to some calculation happening client side.
e.g.
Another related example where a really fast run not showing the duration at all on the runs page:
Why
When a task is mapped, it would be useful to see a waterfall view of all its mapped children.
What
Notes
Why
We want to make sure users can sign up without issues. Eventually this will be covered by new E2E tests but it would be good to have a shorter, more specific set of unit tests on the methods in the sign up pages.
What
Test that:
Users can access the buttons and screens to make the correct API calls
Buttons and screens are in the correct state (active/disabled) depending on user status (e.g. authorized/authenticated/tenant etc) /API responses
Notes
The prefect ui docker image has links to fonts from the internet, and if you start the server without internet connection, the UI will be corrupted.
Solution: download the fonts manually and copy them to the container. Tested on version 0.12.6
https://easyupload.io/ofkue2
Why
Increase our test coverage and give us increased confidence in the auth nav guard/middleware
What
Notes
Sub issue of #101
Some tests and template/examples in cloud-web-ui
We don't plan on fully supporting Windows development for the UI (which we should state clearly in the README), but we can document the requirements and even provide a docker compose file that allows you to develop within a pre-made node-based Docker image on a Windows machine.
Bug Description
Unable to create a new project from the 'Running a Flow' tutorial in the Cloud UI. When prompted to create a new Project, add a Name, and add a description, the Submit button does not proceed to Step 2. This can be rectified by choosing an existing project and pressing Submit to proceed through the tutorial, however this is a hard stop for new users.
Steps To Reproduce
Browsers Tested:
Notes
Why
A common cause of late/not picked up runs is a label mismatch between a flow and available agents. The UI could check a flow's labels and make sure they are compatible with a running agent. The late run tile could have an icon that shows a label mismatch/no compatible agent where relevant.
What
Notes
Something like the ban symbol over the agent icon could be a good icon for the late runs tile?
Why
Increase our test coverage and give us increased confidence in the refresh and sidenav stores. (Putting these two together as one issue as simpler stores with no actions).
What
Notes
Sub issue of #101
Most work done already in cloud-web-ui repo
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.