17f10ffd0d
* ui: Add tab navigation to the browser history/URLs
This commit changes all our tabbed UI interfaces in the catalog to use
actual URL changes rather than only updating the content in the page
using CSS.
Originally we had decided not to add tab clicks into the browser
history for a variety of reasons. As the UI has progressed these tabs
are a fairly common pattern we are using and as the UI grows and
stabilizes around certain UX patterns we've decided to make these tabs
'URL changing'.
Pros:
- Deeplinking
- Potentially smaller Route files with a more concentrated scope of the
contents of a tab rather than the entire page.
- Tab clicks now go into your history meaning backwards and forwards
buttons take you through the tabs not just the pages.
- The majority of our partials are now fully fledged templates (Octane
🎉)
Cons:
- Tab clicks now go into your history meaning backwards and forwards
buttons take you through the tabs not just the pages. (Could be good and
bad from a UX perspective)
- Many more Route and Controller files (yet as mentioned above each of these
have a more reduced scope)
- Moving around the contents of these tabs, or changing the visual names
of them means updates to the URL structure, which then should
potentially entail redirects, therefore what things that seem like
straightforwards design reorganizations are now a little more impactful.
It was getting to the point that the Pros outweight the Cons
Apart from moving some files around we made a few more tiny tweaks to
get this all working:
- Our freetext-filter component now performs the initial search rather
than this happening in the Controller (remove of the search method in
the Controllers and the new didInsertElement hook in the component)
- All of the <TabNav>'s were changed to use its alternative href
approach.
- <TabPanel>s usage was mostly removed. This is th thing I dislike the
most. I think this needs removing, but I'd also like to remove the HTML
it creates. You'll see that every new page is wrappe din the HTML for
the old <TabPanel>, this is to continue to use the same HTML structure
and id's as before to avoid making further changes to any CSS that might
use this and being able to target things during testing. We could have
also removed these here, but it would have meant a much larger changeset
and can just as easily be done at a later date.
- We made a new `tabgroup` page-object component, which is almost
identical to the previous `radiogroup` one and injected that instead
where needed during testing.
* Make sure we pick up indexed routes when nspaces are enabled
* Move session invalidation to the child (session) route
* Revert back to not using didInsertElement for updating the searching
This adds a way for the searchable to remember the last search result
instead, which changes less and stick to the previous method of
searching.
165 lines
4.7 KiB
Gherkin
165 lines
4.7 KiB
Gherkin
@setupApplicationTest
|
|
Feature: dc / services / instances / show: Show Service Instance
|
|
Background:
|
|
Given 1 datacenter model with the value "dc1"
|
|
And 2 instance models from yaml
|
|
---
|
|
- Service:
|
|
ID: service-0-with-id
|
|
Meta:
|
|
external-source: consul
|
|
Node:
|
|
Node: node-0
|
|
- Service:
|
|
ID: service-0-with-id
|
|
Tags: ['Tag1', 'Tag2']
|
|
Meta:
|
|
consul-dashboard-url: http://url.com
|
|
external-source: nomad
|
|
test-meta: test-meta-value
|
|
Node:
|
|
Node: another-node
|
|
Checks:
|
|
- Name: Service check
|
|
ServiceID: service-0
|
|
Output: Output of check
|
|
Status: passing
|
|
- Name: Service check
|
|
ServiceID: service-0
|
|
Output: Output of check
|
|
Status: warning
|
|
- Name: Service check
|
|
Type: http
|
|
ServiceID: service-0
|
|
Output: Output of check
|
|
Status: critical
|
|
- Name: Node check
|
|
ServiceID: ""
|
|
Output: Output of check
|
|
Status: passing
|
|
- Name: Node check
|
|
ServiceID: ""
|
|
Output: Output of check
|
|
Status: warning
|
|
- Name: Node check
|
|
ServiceID: ""
|
|
Output: Output of check
|
|
Status: critical
|
|
---
|
|
Scenario: A Service instance has no Proxy
|
|
Given 1 proxy model from yaml
|
|
---
|
|
- ServiceProxy:
|
|
DestinationServiceName: service-1
|
|
DestinationServiceID: ~
|
|
---
|
|
When I visit the instance page for yaml
|
|
---
|
|
dc: dc1
|
|
service: service-0
|
|
node: another-node
|
|
id: service-0-with-id
|
|
---
|
|
Then the url should be /dc1/services/service-0/instances/another-node/service-0-with-id/service-checks
|
|
Then I don't see type on the proxy
|
|
Then I see externalSource like "nomad"
|
|
|
|
And I don't see upstreams on the tabs
|
|
And I see serviceChecksIsSelected on the tabs
|
|
And I see 3 of the serviceChecks object
|
|
|
|
When I click nodeChecks on the tabs
|
|
And I see nodeChecksIsSelected on the tabs
|
|
And I see 3 of the nodeChecks object
|
|
|
|
When I click tags on the tabs
|
|
And I see tagsIsSelected on the tabs
|
|
|
|
Then I see the text "Tag1" in "[data-test-tags] span:nth-child(1)"
|
|
Then I see the text "Tag2" in "[data-test-tags] span:nth-child(2)"
|
|
|
|
When I click metaData on the tabs
|
|
And I see metaDataIsSelected on the tabs
|
|
And I see 3 of the metaData object
|
|
And the title should be "service-0-with-id - Consul"
|
|
|
|
Scenario: A Service instance warns when deregistered whilst blocking
|
|
Given settings from yaml
|
|
---
|
|
consul:client:
|
|
blocking: 1
|
|
throttle: 200
|
|
---
|
|
And a network latency of 100
|
|
When I visit the instance page for yaml
|
|
---
|
|
dc: dc1
|
|
service: service-0
|
|
node: node-0
|
|
id: service-0-with-id
|
|
---
|
|
Then the url should be /dc1/services/service-0/instances/node-0/service-0-with-id/service-checks
|
|
And an external edit results in 0 instance models
|
|
And pause until I see the text "deregistered" in "[data-notification]"
|
|
|
|
Scenario: A Service instance with a Proxy with only automatically exposed checks but no paths
|
|
Given 1 proxy model from yaml
|
|
---
|
|
- ServiceProxy:
|
|
DestinationServiceName: service-0
|
|
DestinationServiceID: ~
|
|
Expose:
|
|
Checks: true
|
|
Paths: []
|
|
---
|
|
When I visit the instance page for yaml
|
|
---
|
|
dc: dc1
|
|
service: service-0
|
|
node: another-node
|
|
id: service-0-with-id
|
|
---
|
|
Then the url should be /dc1/services/service-0/instances/another-node/service-0-with-id/service-checks
|
|
And I see serviceChecksIsSelected on the tabs
|
|
|
|
And I don't see exposedPaths on the tabs
|
|
|
|
When I click serviceChecks on the tabs
|
|
And I see exposed on the serviceChecks
|
|
|
|
When I click nodeChecks on the tabs
|
|
And I don't see exposed on the nodeChecks
|
|
|
|
Scenario: A Service Instance with a Proxy with no automatically exposed checks
|
|
Given 1 proxy model from yaml
|
|
---
|
|
- ServiceProxy:
|
|
DestinationServiceName: service-0
|
|
DestinationServiceID: ~
|
|
Expose:
|
|
Checks: false
|
|
Paths: []
|
|
---
|
|
When I visit the instance page for yaml
|
|
---
|
|
dc: dc1
|
|
service: service-0
|
|
node: another-node
|
|
id: service-0-with-id
|
|
---
|
|
Then the url should be /dc1/services/service-0/instances/another-node/service-0-with-id/service-checks
|
|
And I see serviceChecksIsSelected on the tabs
|
|
|
|
And I don't see exposedPaths on the tabs
|
|
|
|
When I click serviceChecks on the tabs
|
|
And I don't see exposed on the serviceChecks
|
|
|
|
When I click nodeChecks on the tabs
|
|
And I don't see exposed on the nodeChecks
|
|
|
|
@ignore
|
|
Scenario: A Service Instance's proxy blocking query is closed when the instance is deregistered
|
|
Then ok
|
|
|