diff --git a/packages/cp-frontend/package.json b/packages/cp-frontend/package.json
index 9cfd6cd9..2c5ec5f0 100644
--- a/packages/cp-frontend/package.json
+++ b/packages/cp-frontend/package.json
@@ -78,6 +78,7 @@
"jest-matcher-utils": "^20.0.3",
"jest-snapshot": "^20.0.3",
"jest-styled-components": "^4.2.2",
+ "jest-transform-graphql": "^2.1.0",
"lodash.sortby": "^4.7.0",
"mz": "^2.6.0",
"react-scripts": "^1.0.7",
diff --git a/packages/cp-frontend/src/components/deployment-group/delete.js b/packages/cp-frontend/src/components/deployment-group/delete.js
index 1911f9d2..6afa4dc2 100644
--- a/packages/cp-frontend/src/components/deployment-group/delete.js
+++ b/packages/cp-frontend/src/components/deployment-group/delete.js
@@ -4,8 +4,8 @@ import { ModalHeading, ModalText, Button } from 'joyent-ui-toolkit';
const DeploymentGroupDelete = ({
deploymentGroup,
- onCancelClick,
- onConfirmClick
+ onCancelClick = () => {},
+ onConfirmClick = () => {}
}) =>
@@ -23,9 +23,9 @@ const DeploymentGroupDelete = ({
;
DeploymentGroupDelete.propTypes = {
- deploymentGroup: PropTypes.object,
- onCancelClick: PropTypes.func.isRequired,
- onConfirmClick: PropTypes.func.isRequired
+ deploymentGroup: PropTypes.object.isRequired,
+ onCancelClick: PropTypes.func,
+ onConfirmClick: PropTypes.func
};
export default DeploymentGroupDelete;
diff --git a/packages/cp-frontend/src/components/instances/list-item.js b/packages/cp-frontend/src/components/instances/list-item.js
index 049265fa..71ab7e9b 100644
--- a/packages/cp-frontend/src/components/instances/list-item.js
+++ b/packages/cp-frontend/src/components/instances/list-item.js
@@ -1,23 +1,18 @@
-import React, { Component } from 'react';
+import React from 'react';
import PropTypes from 'prop-types';
import remcalc from 'remcalc';
import styled from 'styled-components';
-import is, { isOr } from 'styled-is';
+import { isOr } from 'styled-is';
import titleCase from 'title-case';
import {
Card,
CardInfo,
CardView,
- CardMeta,
CardTitle,
CardDescription,
HealthyIcon,
- Tooltip,
- TooltipLabel,
- P,
- Label,
- typography
+ Label
} from 'joyent-ui-toolkit';
const STATUSES = [
@@ -80,12 +75,10 @@ const StyledCard = Card.extend`
`;
const InstanceCard = ({
- instance = {},
- onOptionsClick = () => null,
- toggleCollapsed = () => null,
- onHealthMouseOver,
- onStatusMouseOver,
- onMouseOut
+ instance,
+ onHealthMouseOver = () => {},
+ onStatusMouseOver = () => {},
+ onMouseOut = () => {}
}) => {
const statusProps = STATUSES.reduce(
@@ -147,9 +140,7 @@ const InstanceCard = ({
};
InstanceCard.propTypes = {
- instance: PropTypes.object,
- onOptionsClick: PropTypes.func,
- toggleCollapsed: PropTypes.func,
+ instance: PropTypes.object.isRequired,
onHealthMouseOver: PropTypes.func,
onStatusMouseOver: PropTypes.func,
onMouseOut: PropTypes.func
diff --git a/packages/cp-frontend/src/components/navigation/menu.js b/packages/cp-frontend/src/components/navigation/menu.js
index 9f771d82..f4e8e540 100644
--- a/packages/cp-frontend/src/components/navigation/menu.js
+++ b/packages/cp-frontend/src/components/navigation/menu.js
@@ -1,5 +1,3 @@
-// TODO need to sort out navlinks
-
import React from 'react';
import PropTypes from 'prop-types';
import forceArray from 'force-array';
diff --git a/packages/cp-frontend/src/components/navigation/not-found.js b/packages/cp-frontend/src/components/navigation/not-found.js
index fbfecf6d..261e6a3c 100644
--- a/packages/cp-frontend/src/components/navigation/not-found.js
+++ b/packages/cp-frontend/src/components/navigation/not-found.js
@@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import styled from 'styled-components';
import remcalc from 'remcalc';
-import { H1, H2, P, Button } from 'joyent-ui-toolkit';
+import { H1, P, Button } from 'joyent-ui-toolkit';
import { LayoutContainer } from '@components/layout';
const StyledContainer = styled.div`
diff --git a/packages/cp-frontend/src/components/service/delete.js b/packages/cp-frontend/src/components/service/delete.js
index de39f433..ed54829a 100644
--- a/packages/cp-frontend/src/components/service/delete.js
+++ b/packages/cp-frontend/src/components/service/delete.js
@@ -2,19 +2,17 @@ import React from 'react';
import PropTypes from 'prop-types';
import { ModalHeading, ModalText, Button } from 'joyent-ui-toolkit';
-const propTypes = {
- service: PropTypes.object,
- onCancelClick: PropTypes.func.isRequired,
- onConfirmClick: PropTypes.func.isRequired
-};
-
-const ServiceDelete = ({ service, onCancelClick, onConfirmClick }) =>
+const ServiceDelete = ({
+ service,
+ onCancelClick = () => {},
+ onConfirmClick = () => {}
+}) =>
Deleting a service: {service.name}
- Deleting a service can lead to irreverasable loss of data and failures in
+ Deleting a service can lead to irreversible loss of data and failures in
your application. Are you sure you want to continue?
@@ -23,6 +21,10 @@ const ServiceDelete = ({ service, onCancelClick, onConfirmClick }) =>
Delete service
;
-ServiceDelete.propTypes = propTypes;
+ServiceDelete.propTypes = {
+ service: PropTypes.object.isRequired,
+ onCancelClick: PropTypes.func,
+ onConfirmClick: PropTypes.func
+};
export default ServiceDelete;
diff --git a/packages/cp-frontend/src/components/service/scale.js b/packages/cp-frontend/src/components/service/scale.js
index 4f11f3f6..ce64ddfe 100644
--- a/packages/cp-frontend/src/components/service/scale.js
+++ b/packages/cp-frontend/src/components/service/scale.js
@@ -11,8 +11,8 @@ import {
const ServiceScale = ({
service,
- handleSubmit,
- onCancelClick,
+ handleSubmit = () => {},
+ onCancelClick = () => {},
invalid,
pristine
}) =>
@@ -41,7 +41,7 @@ const ServiceScale = ({
;
ServiceScale.propTypes = {
- service: PropTypes.object,
+ service: PropTypes.object.isRequired,
onSubmitClick: PropTypes.func,
onCancelClick: PropTypes.func
};
diff --git a/packages/cp-frontend/src/components/services/list-item.js b/packages/cp-frontend/src/components/services/list-item.js
index 1e7673cf..dc3a0244 100644
--- a/packages/cp-frontend/src/components/services/list-item.js
+++ b/packages/cp-frontend/src/components/services/list-item.js
@@ -5,7 +5,7 @@ import forceArray from 'force-array';
import sortBy from 'lodash.sortby';
import { isNot } from 'styled-is';
-import { InstancesIcon, HealthyIcon, UnhealthyIcon } from 'joyent-ui-toolkit';
+import { InstancesIcon, HealthyIcon } from 'joyent-ui-toolkit';
import Status from './status';
import {
@@ -41,7 +41,7 @@ const StyledAnchor = styled(Anchor)`
const ServiceListItem = ({
onQuickActionsClick = () => {},
deploymentGroup = '',
- service = {},
+ service,
isChild = false
}) => {
const handleCardOptionsClick = evt => {
@@ -56,14 +56,16 @@ const ServiceListItem = ({
? children.reduce((count, child) => count + child.instances.length, 0)
: service.instances.length;
- const childrenItems = children.map(service =>
-
- );
+ const childrenItems = children.length
+ ? children.map(service =>
+
+ ) : null;
+
const title = isChild
?
@@ -118,7 +120,7 @@ const ServiceListItem = ({
)
}
- const view = childrenItems.length
+ const view = children.length
?
{childrenItems}
diff --git a/packages/cp-frontend/src/components/services/quick-actions.js b/packages/cp-frontend/src/components/services/quick-actions.js
index 8ca4ce15..d79fb678 100644
--- a/packages/cp-frontend/src/components/services/quick-actions.js
+++ b/packages/cp-frontend/src/components/services/quick-actions.js
@@ -6,27 +6,17 @@ const ServicesQuickActions = ({
show,
position,
service,
- url,
- onBlur,
- onRestartClick,
- onStopClick,
- onStartClick,
- onScaleClick,
- onDeleteClick
+ onBlur = () => {},
+ onRestartClick = () => {},
+ onStopClick = () => {},
+ onStartClick = () => {},
+ onScaleClick = () => {},
+ onDeleteClick = () => {},
}) => {
if (!show) {
return null;
}
- /* const p = Object.keys(position).reduce((p, key) => {
- if (typeof position[key] === 'number') {
- p[key] = `${position[key]}px`;
- } else {
- p[key] = position[key];
- }
- return p;
- }, {}); */
-
const handleRestartClick = evt => {
onRestartClick(evt, service);
};
diff --git a/packages/cp-frontend/src/containers/deployment-group/delete.js b/packages/cp-frontend/src/containers/deployment-group/delete.js
index 53643893..0d1a1b2b 100644
--- a/packages/cp-frontend/src/containers/deployment-group/delete.js
+++ b/packages/cp-frontend/src/containers/deployment-group/delete.js
@@ -5,10 +5,10 @@ import DeploymentGroupDeleteMutation from '@graphql/DeploymentGroupDeleteMutatio
import DeploymentGroupQuery from '@graphql/DeploymentGroup.gql';
import { Loader, ModalErrorMessage } from '@components/messaging';
import { DeploymentGroupDelete as DeploymentGroupDeleteComponent } from '@components/deployment-group';
-import { Modal, ModalHeading, Button } from 'joyent-ui-toolkit'
+import { Modal } from 'joyent-ui-toolkit'
import { withNotFound, GqlPaths } from '@containers/navigation';
-class DeploymentGroupDelete extends Component {
+export class DeploymentGroupDelete extends Component {
constructor(props) {
super(props);
@@ -18,7 +18,7 @@ class DeploymentGroupDelete extends Component {
}
render() {
- const { location, history, match, loading, error } = this.props;
+ const { history, match, loading, error } = this.props;
const handleCloseClick = evt => {
const closeUrl = match.url.split('/').slice(0, -2).join('/');
diff --git a/packages/cp-frontend/src/containers/deployment-groups/import.js b/packages/cp-frontend/src/containers/deployment-groups/import.js
index d21d1da3..ed9dda5b 100644
--- a/packages/cp-frontend/src/containers/deployment-groups/import.js
+++ b/packages/cp-frontend/src/containers/deployment-groups/import.js
@@ -37,7 +37,7 @@ class DeploymentGroupImport extends Component {
};
render() {
- const { loading, error } = this.state;
+ const { error } = this.state;
const _title = Importing deployment group ;
diff --git a/packages/cp-frontend/src/containers/deployment-groups/list.js b/packages/cp-frontend/src/containers/deployment-groups/list.js
index 662320c6..140e8a7c 100644
--- a/packages/cp-frontend/src/containers/deployment-groups/list.js
+++ b/packages/cp-frontend/src/containers/deployment-groups/list.js
@@ -110,8 +110,7 @@ const StyledIconButton = styled(IconButton)`
}
`;
-const DeploymentGroupList = ({
- location,
+export const DeploymentGroupList = ({
deploymentGroups,
importable,
loading,
diff --git a/packages/cp-frontend/src/containers/environment/index.js b/packages/cp-frontend/src/containers/environment/index.js
index 4ef6011f..ceb7ea29 100644
--- a/packages/cp-frontend/src/containers/environment/index.js
+++ b/packages/cp-frontend/src/containers/environment/index.js
@@ -1,4 +1,4 @@
-import React, { Component } from 'react';
+import React from 'react';
import { compose, graphql } from 'react-apollo';
import get from 'lodash.get';
@@ -6,7 +6,7 @@ import ManifestQuery from '@graphql/Manifest.gql';
import { LayoutContainer } from '@components/layout';
import { Title } from '@components/navigation';
-import { Loader, ErrorMessage, WarningMessage } from '@components/messaging';
+import { Loader, ErrorMessage } from '@components/messaging';
import { Environment } from '@components/manifest/edit-or-create';
const EnvironmentReadOnly = ({
diff --git a/packages/cp-frontend/src/containers/instances/list.js b/packages/cp-frontend/src/containers/instances/list.js
index 9459ef65..a3054995 100644
--- a/packages/cp-frontend/src/containers/instances/list.js
+++ b/packages/cp-frontend/src/containers/instances/list.js
@@ -1,5 +1,4 @@
-import React, { Component } from 'react';
-import styled from 'styled-components';
+import React from 'react';
import { compose, graphql } from 'react-apollo';
import { connect } from 'react-redux';
import InstancesQuery from '@graphql/Instances.gql';
@@ -13,7 +12,7 @@ import { InstanceListItem, EmptyInstances } from '@components/instances';
import { toggleInstancesTooltip } from '@root/state/actions';
import { withNotFound, GqlPaths } from '@containers/navigation';
-const InstanceList = ({
+export const InstanceList = ({
deploymentGroup,
instances = [],
loading,
@@ -92,7 +91,6 @@ const InstanceList = ({
null}
onHealthMouseOver={handleHealthMouseOver}
onStatusMouseOver={handleStatusMouseOver}
onMouseOut={handleMouseOut}
diff --git a/packages/cp-frontend/src/containers/instances/tooltip.js b/packages/cp-frontend/src/containers/instances/tooltip.js
index 4959f544..9d9cca24 100644
--- a/packages/cp-frontend/src/containers/instances/tooltip.js
+++ b/packages/cp-frontend/src/containers/instances/tooltip.js
@@ -2,7 +2,6 @@ import React from 'react';
import { connect } from 'react-redux';
import styled from 'styled-components';
import { Tooltip, TooltipLabel } from 'joyent-ui-toolkit';
-import { ServicesQuickActions } from '@components/services';
const StyledContainer = styled.div`
position: absolute;
@@ -29,7 +28,7 @@ const statusMessages = {
unknown: 'We cannot work out what status your instance is in',
};
-const InstancesTooltip = ({
+export const InstancesTooltip = ({
instancesTooltip
}) => {
diff --git a/packages/cp-frontend/src/containers/navigation/breadcrumb.js b/packages/cp-frontend/src/containers/navigation/breadcrumb.js
index 50e59871..c5e32330 100644
--- a/packages/cp-frontend/src/containers/navigation/breadcrumb.js
+++ b/packages/cp-frontend/src/containers/navigation/breadcrumb.js
@@ -1,4 +1,5 @@
import React from 'react';
+import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { compose } from 'react-apollo';
import { Breadcrumb as BreadcrumbComponent } from '@components/navigation';
@@ -8,9 +9,9 @@ import {
serviceBySlugSelector
} from '@root/state/selectors';
-const Breadcrumb = ({ deploymentGroup, service, location }) => {
+export const Breadcrumb = ({ deploymentGroup, service, location: { pathname }}) => {
- const path = location.pathname.split('/');
+ const path = pathname.split('/');
const links = [
{
@@ -36,6 +37,12 @@ const Breadcrumb = ({ deploymentGroup, service, location }) => {
return ;
};
+Breadcrumb.propTypes = {
+ deploymentGroup: PropTypes.object,
+ service: PropTypes.object,
+ location: PropTypes.object
+}
+
const connectBreadcrumb = connect(
(state, ownProps) => {
const params = ownProps.match.params;
diff --git a/packages/cp-frontend/src/containers/navigation/header.js b/packages/cp-frontend/src/containers/navigation/header.js
index 0e917284..34a7a8c6 100644
--- a/packages/cp-frontend/src/containers/navigation/header.js
+++ b/packages/cp-frontend/src/containers/navigation/header.js
@@ -5,7 +5,7 @@ import get from 'lodash.get';
import PortalQuery from '@graphql/Portal.gql';
import { Header as HeaderComponent } from '@components/navigation';
-const Header = ({ datacenter, username }) =>
+export const Header = ({ datacenter, username }) =>
;
const HeaderWithData = graphql(PortalQuery, {
diff --git a/packages/cp-frontend/src/containers/navigation/menu.js b/packages/cp-frontend/src/containers/navigation/menu.js
index fb1a399a..6e2a8f91 100644
--- a/packages/cp-frontend/src/containers/navigation/menu.js
+++ b/packages/cp-frontend/src/containers/navigation/menu.js
@@ -4,7 +4,7 @@ import { compose } from 'react-apollo';
import withNotFound from './not-found-hoc';
import { Menu as MenuComponent } from '@components/navigation';
-const Menu = ({ location, match, sections }) => {
+export const Menu = ({ location, match, sections }) => {
if (!sections || !sections.length) {
return null;
diff --git a/packages/cp-frontend/src/containers/navigation/not-found-hoc.js b/packages/cp-frontend/src/containers/navigation/not-found-hoc.js
index f772d0f3..7a9eea6a 100644
--- a/packages/cp-frontend/src/containers/navigation/not-found-hoc.js
+++ b/packages/cp-frontend/src/containers/navigation/not-found-hoc.js
@@ -11,27 +11,25 @@ export default (paths) => {
return class extends Component {
- constructor(props) {
- super(props);
- }
-
componentWillReceiveProps(nextProps) {
+
if(paths) {
const {
error,
location,
- history,
- match
+ history
} = nextProps;
- if (error && (!location.state || !location.state.notFound)) {
- if(error.graphQLErrors && error.graphQLErrors.length) {
- const graphQLError = error.graphQLErrors[0];
- if(graphQLError.message === 'Not Found') {
- const notFound = graphQLError.path.pop();
- if(paths.indexOf(notFound) > -1) {
- history.replace(location.pathname, { notFound });
- }
+ if (
+ error
+ && (!location.state || !location.state.notFound)
+ && (error.graphQLErrors && error.graphQLErrors.length)
+ ) {
+ const graphQLError = error.graphQLErrors[0];
+ if(graphQLError.message === 'Not Found') {
+ const notFound = graphQLError.path.pop();
+ if(paths.indexOf(notFound) > -1) {
+ history.replace(location.pathname, { notFound });
}
}
}
diff --git a/packages/cp-frontend/src/containers/service/delete.js b/packages/cp-frontend/src/containers/service/delete.js
index 633ca754..ed048426 100644
--- a/packages/cp-frontend/src/containers/service/delete.js
+++ b/packages/cp-frontend/src/containers/service/delete.js
@@ -4,11 +4,11 @@ import { compose, graphql } from 'react-apollo';
import ServicesDeleteMutation from '@graphql/ServicesDeleteMutation.gql';
import { Loader, ModalErrorMessage } from '@components/messaging';
import { ServiceDelete as ServiceDeleteComponent } from '@components/service';
-import { Modal, ModalHeading, Button } from 'joyent-ui-toolkit';
+import { Modal } from 'joyent-ui-toolkit';
import ServiceGql from './service-gql';
import { withNotFound, GqlPaths } from '@containers/navigation';
-class ServiceDelete extends Component {
+export class ServiceDelete extends Component {
constructor(props) {
super(props);
@@ -18,7 +18,7 @@ class ServiceDelete extends Component {
}
render() {
- const { loading, error, match, history, location } = this.props;
+ const { loading, error, match, history } = this.props;
const handleCloseClick = evt => {
const closeUrl = match.url.split('/').slice(0, -2).join('/');
@@ -79,6 +79,9 @@ class ServiceDelete extends Component {
ServiceDelete.propTypes = {
service: PropTypes.object,
+ loading: PropTypes.bool,
+ error: PropTypes.bool,
+ match: PropTypes.object,
history: PropTypes.object,
deleteServices: PropTypes.func.isRequired
};
diff --git a/packages/cp-frontend/src/containers/service/scale.js b/packages/cp-frontend/src/containers/service/scale.js
index 0c0fee38..26a77226 100644
--- a/packages/cp-frontend/src/containers/service/scale.js
+++ b/packages/cp-frontend/src/containers/service/scale.js
@@ -5,11 +5,11 @@ import { reduxForm } from 'redux-form';
import ServiceScaleMutation from '@graphql/ServiceScale.gql';
import { Loader, ModalErrorMessage } from '@components/messaging';
import { ServiceScale as ServiceScaleComponent } from '@components/service';
-import { Modal, ModalHeading, Button } from 'joyent-ui-toolkit';
+import { Modal } from 'joyent-ui-toolkit';
import ServiceGql from './service-gql';
import { withNotFound, GqlPaths } from '@containers/navigation';
-class ServiceScale extends Component {
+export class ServiceScale extends Component {
constructor(props) {
super(props);
@@ -19,7 +19,7 @@ class ServiceScale extends Component {
}
render() {
- const { loading, error, match, history, location } = this.props;
+ const { loading, error, match, history } = this.props;
const handleCloseClick = evt => {
const closeUrl = match.url.split('/').slice(0, -2).join('/');
@@ -104,6 +104,9 @@ class ServiceScale extends Component {
ServiceScale.propTypes = {
service: PropTypes.object,
+ loading: PropTypes.bool,
+ error: PropTypes.bool,
+ match: PropTypes.object,
history: PropTypes.object,
scale: PropTypes.func.isRequired
};
diff --git a/packages/cp-frontend/src/containers/services/list.js b/packages/cp-frontend/src/containers/services/list.js
index 1bda23bb..c135bd26 100644
--- a/packages/cp-frontend/src/containers/services/list.js
+++ b/packages/cp-frontend/src/containers/services/list.js
@@ -1,4 +1,5 @@
import React, { Component } from 'react';
+import PropTypes from 'prop-types';
import { compose, graphql } from 'react-apollo';
import { connect } from 'react-redux';
import styled from 'styled-components';
@@ -18,7 +19,7 @@ const StyledContainer = styled.div`
position: relative;
`;
-class ServiceList extends Component {
+export class ServiceList extends Component {
constructor(props) {
super(props);
@@ -127,6 +128,14 @@ class ServiceList extends Component {
}
}
+ServiceList.propTypes = {
+ deploymentGroup: PropTypes.object,
+ services: PropTypes.array,
+ loading: PropTypes.bool,
+ error: PropTypes.bool,
+ toggleServicesQuickActions: PropTypes.func
+}
+
const mapStateToProps = (state, ownProps) => ({});
const mapDispatchToProps = dispatch => ({
diff --git a/packages/cp-frontend/src/containers/services/menu.js b/packages/cp-frontend/src/containers/services/menu.js
index 80fb2192..aa7de230 100644
--- a/packages/cp-frontend/src/containers/services/menu.js
+++ b/packages/cp-frontend/src/containers/services/menu.js
@@ -20,19 +20,18 @@ const PaddedRow = Row.extend`
margin-bottom: ${remcalc(18)}
`;
-const ServicesMenu = ({ location, history: { push } }) => {
+export const ServicesMenu = ({
+ location: { pathname },
+ history: { push }
+}) => {
- if(location.state && location.state.notFound) {
- return null;
- }
-
- const toggleValue = location.pathname.split('-').pop();
+ const toggleValue = pathname.split('-').pop();
const handleToggle = evt => {
const value = evt.target.value;
if (value !== toggleValue) {
- const index = location.pathname.lastIndexOf('-');
- const path = `${location.pathname.slice(0, index)}-${value}`;
+ const index = pathname.lastIndexOf('-');
+ const path = `${pathname.slice(0, index)}-${value}`;
push(path);
}
};
diff --git a/packages/cp-frontend/src/containers/services/quick-actions.js b/packages/cp-frontend/src/containers/services/quick-actions.js
index 890c4053..dfbc34c8 100644
--- a/packages/cp-frontend/src/containers/services/quick-actions.js
+++ b/packages/cp-frontend/src/containers/services/quick-actions.js
@@ -5,7 +5,6 @@ import styled from 'styled-components';
import ServicesRestartMutation from '@graphql/ServicesRestartMutation.gql';
import ServicesStopMutation from '@graphql/ServicesStopMutation.gql';
import ServicesStartMutation from '@graphql/ServicesStartMutation.gql';
-import { Tooltip, TooltipLabel } from 'joyent-ui-toolkit';
import { toggleServicesQuickActions } from '@root/state/actions';
import { ServicesQuickActions as QuickActions } from '@components/services';
import { ErrorMessage } from '@components/messaging';
@@ -17,7 +16,7 @@ const StyledContainer = styled.div`
left: 0;
`;
-class ServicesQuickActions extends Component {
+export class ServicesQuickActions extends Component {
constructor(props) {
super(props);
diff --git a/packages/cp-frontend/src/containers/services/topology.js b/packages/cp-frontend/src/containers/services/topology.js
index 98236c15..f40d6951 100644
--- a/packages/cp-frontend/src/containers/services/topology.js
+++ b/packages/cp-frontend/src/containers/services/topology.js
@@ -22,7 +22,7 @@ const StyledContainer = styled.div`
position: relative;
`;
-class ServicesTopology extends Component {
+export class ServicesTopology extends Component {
constructor(props) {
super(props);
diff --git a/packages/cp-frontend/test/run b/packages/cp-frontend/test/run
index 209c3690..255301c0 100755
--- a/packages/cp-frontend/test/run
+++ b/packages/cp-frontend/test/run
@@ -30,20 +30,26 @@ const paths = require('react-scripts/config/paths');
const config = createJestConfig(
relativePath =>
- path.resolve(__dirname, '../node_modules/react-scripts', relativePath),
- path.resolve(__dirname, '..'),
+ path.resolve(__dirname, '../../../node_modules/react-scripts', relativePath),
+ path.resolve(__dirname, '../../../'),
false
);
// patch
config.testEnvironment = 'node';
-config.testMatch = ['/test/(unit|integration)/*.js'];
+config.testMatch = ['/packages/cp-frontend/test/(unit|integration)/**/*.js'];
+config.testPathIgnorePatterns = ['/packages/cp-frontend/test/(unit|integration)/mocks'];
+config.transform = Object.assign({}, {
+ '\\.(gql|graphql)$': 'jest-transform-graphql'
+}, config.transform)
config.moduleNameMapper = Object.assign({}, config.moduleNameMapper, {
- '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/test/file-mock.js',
- '^root/(.*)$': '/src/$1',
- '^@components/(.*)$': '/src/components/$1',
- '^@assets/(.*)$': '/src/assets/$1',
- '^@state/(.*)$': '/src/state/$1'
+ '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '/packages/cp-frontend/test/file-mock.js',
+ '^@root/(.*)$': '/packages/cp-frontend/src/$1',
+ '^@components/(.*)$': '/packages/cp-frontend/src/components/$1',
+ '^@containers/(.*)$': '/packages/cp-frontend/src/containers/$1',
+ '^@graphql/(.*)$': '/packages/cp-frontend/src/graphql/$1',
+ '^@assets/(.*)$': '/packages/cp-frontend/src/assets/$1',
+ '^@state/(.*)$': '/packages/cp-frontend/src/state/$1'
});
argv.push('--config', JSON.stringify(config));
diff --git a/packages/cp-frontend/test/unit/components/deployment-group/__snapshots__/delete.js.snap b/packages/cp-frontend/test/unit/components/deployment-group/__snapshots__/delete.js.snap
new file mode 100644
index 00000000..e457630e
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/deployment-group/__snapshots__/delete.js.snap
@@ -0,0 +1,259 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c4::-moz-focus-inner,
+.c4[type="button"]::-moz-focus-inner,
+.c4[type="reset"]::-moz-focus-inner,
+.c4[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c4:-moz-focusring,
+.c4[type="button"]:-moz-focusring,
+.c4[type="reset"]:-moz-focusring,
+.c4[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c4:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c4:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c4[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c4:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c4:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c4 + button {
+ margin-left: 1.25rem;
+}
+
+.c5 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c5::-moz-focus-inner,
+.c5[type="button"]::-moz-focus-inner,
+.c5[type="reset"]::-moz-focus-inner,
+.c5[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c5:-moz-focusring,
+.c5[type="button"]:-moz-focusring,
+.c5[type="reset"]:-moz-focusring,
+.c5[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c5:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c5:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c5:active,
+.c5:active:hover,
+.c5:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c5[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c5 + button {
+ margin-left: 1.25rem;
+}
+
+.c1 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c3 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c0 {
+ line-height: 1.25;
+ color: ;
+ margin: 0 0 0.75rem 0;
+}
+
+.c2 {
+ color: ;
+ margin: 0.75rem 0 1.875rem 0;
+}
+
+
+
+ Deleting a deployment group:
+
+
+ Wordpress Blog Example
+
+
+ Deleting a deployment group will also remove all of the services and instances associated with that deployment group. Are you sure you want to continue?
+
+
+ Cancel
+
+
+ Delete deployment group
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/deployment-group/delete.js b/packages/cp-frontend/test/unit/components/deployment-group/delete.js
new file mode 100644
index 00000000..9be55462
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/deployment-group/delete.js
@@ -0,0 +1,20 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import DeploymentGroupDelete from '@components/deployment-group/delete.js';
+import { deploymentGroup } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/instances/__snapshots__/empty.js.snap b/packages/cp-frontend/test/unit/components/instances/__snapshots__/empty.js.snap
new file mode 100644
index 00000000..0ecf557e
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/instances/__snapshots__/empty.js.snap
@@ -0,0 +1,62 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c0 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c1 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c2 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+@media only screen and (min-width:0em) {
+ .c1 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-basis: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+
+
+
+ You don't have any instances
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/instances/__snapshots__/list-item.js.snap b/packages/cp-frontend/test/unit/components/instances/__snapshots__/list-item.js.snap
new file mode 100644
index 00000000..702dfadb
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/instances/__snapshots__/list-item.js.snap
@@ -0,0 +1,284 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c10 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+}
+
+.c8 {
+ fill: ;
+}
+
+.c3 {
+ font-size: 0.9375rem;
+ line-height: 1.5;
+ color: ;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 600;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-flex-grow: 2;
+ -ms-flex-grow: 2;
+ flex-grow: 2;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ width: 100%;
+ padding: 0.75rem 1.125rem 0 1.125rem;
+ -webkit-flex-grow: 6;
+ -ms-flex-grow: 6;
+ flex-grow: 6;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ width: auto;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding: 0 1.125rem;
+}
+
+.c4 {
+ display: inline-block;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.c5 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+}
+
+.c6 {
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.c1 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ position: relative;
+ height: auto;
+ min-height: 7.875rem;
+ margin-bottom: 0.625rem;
+ border: 0.0625rem solid;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ margin-right: 0rem;
+ margin-left: 0rem;
+ min-height: auto;
+ height: 3rem;
+ margin-bottom: 1rem;
+ background-color: ;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ margin: 0;
+ height: auto;
+ padding-top: 0;
+ min-width: auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+}
+
+.c9 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+ display: inline-block;
+ margin-left: 1.5rem;
+}
+
+.c9::first-letter {
+ text-transform: capitalize;
+}
+
+.c7 {
+ position: absolute;
+}
+
+.c11 {
+ margin-right: 0.375rem;
+ width: 0.375rem;
+ height: 0.375rem;
+ border-radius: 0.1875rem;
+ display: inline-block;
+ background-color: ;
+}
+
+.c0 {
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ background-color: ;
+}
+
+.c0:not(:last-child) {
+ margin-bottom: 0;
+ box-shadow: none;
+ border-bottom-width: 0;
+}
+
+
+
+
+
+ wordpress_01
+
+
+
+
+
+
+
+
+
+ icon: state
+
+
+
+
+
+
+
+
+ healthy
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/instances/empty.js b/packages/cp-frontend/test/unit/components/instances/empty.js
new file mode 100644
index 00000000..abc79ae8
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/instances/empty.js
@@ -0,0 +1,19 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import EmtpyInstances from '@components/instances/empty.js';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/instances/list-item.js b/packages/cp-frontend/test/unit/components/instances/list-item.js
new file mode 100644
index 00000000..70faf1e1
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/instances/list-item.js
@@ -0,0 +1,20 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import InstanceCard from '@components/instances/list-item.js';
+import { instance } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/layout/__snapshots__/container.js.snap b/packages/cp-frontend/test/unit/components/layout/__snapshots__/container.js.snap
new file mode 100644
index 00000000..8324951c
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/layout/__snapshots__/container.js.snap
@@ -0,0 +1,38 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: block;
+ -webkit-flex-flow: column;
+ -ms-flex-flow: column;
+ flex-flow: column;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/layout/container.js b/packages/cp-frontend/test/unit/components/layout/container.js
new file mode 100644
index 00000000..1af1a623
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/layout/container.js
@@ -0,0 +1,18 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Container from '@components/layout/container';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/manifest/edit-or-create.js b/packages/cp-frontend/test/unit/components/manifest/edit-or-create.js
new file mode 100644
index 00000000..4cfa6fc8
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/manifest/edit-or-create.js
@@ -0,0 +1,22 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import MEditor from '@components/manifest/edit-or-create.js';
+import { Router } from '../../mocks';
+
+xit('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/messaging/__snapshots__/error.js.snap b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/error.js.snap
new file mode 100644
index 00000000..8a237ef4
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/error.js.snap
@@ -0,0 +1,53 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c0 {
+ position: relative;
+ margin-bottom: 0.75rem;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ border: 0.0625rem solid;
+}
+
+.c1 {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 2.25rem;
+ height: 100%;
+ background-color: ;
+}
+
+.c2 {
+ padding: 0.75rem 0 0.84375rem 0;
+}
+
+.c3 {
+ margin: 0.09375rem 3.375rem 0 3.375rem;
+}
+
+
+
+
+
+ Ooops, there's been an error
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/messaging/__snapshots__/loader.js.snap b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/loader.js.snap
new file mode 100644
index 00000000..2933038b
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/loader.js.snap
@@ -0,0 +1,109 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ fill: ;
+ stroke: ;
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+}
+
+.c2 {
+ fill: ;
+ stroke: ;
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 0.5s;
+ animation-delay: 0.5s;
+}
+
+.c3 {
+ fill: ;
+ stroke: ;
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 1s;
+ animation-delay: 1s;
+}
+
+.c0 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-content: center;
+ -ms-flex-line-pack: center;
+ align-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+}
+
+.c4 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ text-align: center;
+ margin-bottom: 0;
+}
+
+
+
+
+
+
+
+
+ Loading...
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/messaging/__snapshots__/modal-error.js.snap b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/modal-error.js.snap
new file mode 100644
index 00000000..5417f14f
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/modal-error.js.snap
@@ -0,0 +1,160 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c5 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c5::-moz-focus-inner,
+.c5[type="button"]::-moz-focus-inner,
+.c5[type="reset"]::-moz-focus-inner,
+.c5[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c5:-moz-focusring,
+.c5[type="button"]:-moz-focusring,
+.c5[type="reset"]:-moz-focusring,
+.c5[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c5:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c5:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c5:active,
+.c5:active:hover,
+.c5:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c5[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c5:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c5:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c5:active,
+.c5:active:hover,
+.c5:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c5 + button {
+ margin-left: 1.25rem;
+}
+
+.c2 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c4 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c1 {
+ line-height: 1.25;
+ color: ;
+ margin: 0 0 0.75rem 0;
+}
+
+.c3 {
+ color: ;
+ margin: 0.75rem 0 1.875rem 0;
+}
+
+.c0 {
+ color: ;
+}
+
+
+
+
+ Modal error message
+
+
+ Close
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/messaging/__snapshots__/warning.js.snap b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/warning.js.snap
new file mode 100644
index 00000000..2b5ccfee
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/__snapshots__/warning.js.snap
@@ -0,0 +1,53 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c0 {
+ position: relative;
+ margin-bottom: 0.75rem;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ border: 0.0625rem solid;
+}
+
+.c1 {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 2.25rem;
+ height: 100%;
+ background-color: ;
+}
+
+.c2 {
+ padding: 0.75rem 0 0.84375rem 0;
+}
+
+.c3 {
+ margin: 0.09375rem 3.375rem 0 3.375rem;
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/messaging/error.js b/packages/cp-frontend/test/unit/components/messaging/error.js
new file mode 100644
index 00000000..fd33db9b
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/error.js
@@ -0,0 +1,18 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Error from '@components/messaging/error';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/messaging/loader.js b/packages/cp-frontend/test/unit/components/messaging/loader.js
new file mode 100644
index 00000000..beb6fae7
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/loader.js
@@ -0,0 +1,18 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Loader from '@components/messaging/loader';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/messaging/modal-error.js b/packages/cp-frontend/test/unit/components/messaging/modal-error.js
new file mode 100644
index 00000000..87662409
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/modal-error.js
@@ -0,0 +1,18 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import ModalError from '@components/messaging/modal-error';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+ {}}/>
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/messaging/warning.js b/packages/cp-frontend/test/unit/components/messaging/warning.js
new file mode 100644
index 00000000..83c46ac0
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/messaging/warning.js
@@ -0,0 +1,18 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Warning from '@components/messaging/warning';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/navigation/__snapshots__/breadcrumb.js.snap b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/breadcrumb.js.snap
new file mode 100644
index 00000000..233fa4e6
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/breadcrumb.js.snap
@@ -0,0 +1,62 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c0 {
+ border-bottom: solid 0.0625rem;
+}
+
+@media only screen and (min-width:48em) {
+ .c1 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c1 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c1 {
+ width: 76rem;
+ }
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/__snapshots__/header.js.snap b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/header.js.snap
similarity index 84%
rename from packages/cp-frontend/test/unit/__snapshots__/header.js.snap
rename to packages/cp-frontend/test/unit/components/navigation/__snapshots__/header.js.snap
index 361e0c3d..c679ee1b 100644
--- a/packages/cp-frontend/test/unit/__snapshots__/header.js.snap
+++ b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/header.js.snap
@@ -1,18 +1,17 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`renders without throwing 1`] = `
-.iKAUmn {
+.c2 {
font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
font-weight: 500;
font-size: 1.5rem;
- -webkit-text-transform: uppercase;
text-transform: uppercase;
color: ;
font-size: 1.8125rem;
margin: 0;
}
-.eVSukw {
+.c1 {
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
@@ -25,7 +24,7 @@ exports[`renders without throwing 1`] = `
padding: 0.9375rem 0;
}
-.facVTr {
+.c5 {
font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
font-weight: 400;
line-height: 1.5rem;
@@ -36,7 +35,7 @@ exports[`renders without throwing 1`] = `
margin: 0;
}
-.hnPDgK {
+.c4 {
-webkit-flex: 0 1 auto;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
@@ -51,7 +50,7 @@ exports[`renders without throwing 1`] = `
max-width: 6.25rem;
}
-.fAWQXE {
+.c0 {
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
@@ -80,38 +79,44 @@ exports[`renders without throwing 1`] = `
line-height: 1.5625rem;
}
+.c3 {
+ border-style: none;
+ width: 5.4375rem;
+ height: 1.5625rem;
+}
+
diff --git a/packages/cp-frontend/test/unit/components/navigation/__snapshots__/menu.js.snap b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/menu.js.snap
new file mode 100644
index 00000000..567ea5fb
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/menu.js.snap
@@ -0,0 +1,41 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+}
+
+.c1 {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/navigation/__snapshots__/not-found.js.snap b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/not-found.js.snap
new file mode 100644
index 00000000..bbfe790f
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/not-found.js.snap
@@ -0,0 +1,157 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c6 {
+ display: inline-block;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c6:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c6:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c6:active,
+.c6:active:hover,
+.c6:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c6[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c3 {
+ font-size: 2rem;
+ margin: 0.625rem 0;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 2.25rem;
+ font-style: normal;
+ font-stretch: normal;
+ margin: 0;
+}
+
+.c5 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: block;
+ -webkit-flex-flow: column;
+ -ms-flex-flow: column;
+ flex-flow: column;
+}
+
+.c1 {
+ margin-top: 3.75rem;
+}
+
+.c2 {
+ font-weight: normal;
+ font-size: 2rem;
+}
+
+.c4 {
+ margin-bottom: 1.875rem;
+ max-width: 30.625rem;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+
+
+ I have no memory of this place
+
+
+ HTTP 404: We can’t find what you are looking for. Next time, always follow your nose.
+
+
+ Back to dashboard
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/navigation/__snapshots__/title.js.snap b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/title.js.snap
new file mode 100644
index 00000000..c0fefdf2
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/__snapshots__/title.js.snap
@@ -0,0 +1,20 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c0 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+ margin-top: 0.125rem;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/navigation/breadcrumb.js b/packages/cp-frontend/test/unit/components/navigation/breadcrumb.js
new file mode 100644
index 00000000..1373b9ec
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/breadcrumb.js
@@ -0,0 +1,21 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Breadcrumb from '@components/navigation/breadcrumb';
+import { Router } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/header.js b/packages/cp-frontend/test/unit/components/navigation/header.js
similarity index 74%
rename from packages/cp-frontend/test/unit/header.js
rename to packages/cp-frontend/test/unit/components/navigation/header.js
index e9bfef52..37a326e5 100644
--- a/packages/cp-frontend/test/unit/header.js
+++ b/packages/cp-frontend/test/unit/components/navigation/header.js
@@ -1,5 +1,5 @@
/**
- * @jest-environment node
+ * @jest-environment jsdom
*/
import React from 'react';
@@ -7,7 +7,7 @@ import renderer from 'react-test-renderer';
import 'jest-styled-components';
import Header from '@components/navigation/header';
-import { Router } from './mocks';
+import { Router } from '../../mocks';
it('renders without throwing', () => {
const tree = renderer
@@ -17,5 +17,5 @@ it('renders without throwing', () => {
)
.toJSON();
- expect(tree).toMatchStyledComponentsSnapshot();
+ expect(tree).toMatchSnapshot();
});
diff --git a/packages/cp-frontend/test/unit/components/navigation/menu.js b/packages/cp-frontend/test/unit/components/navigation/menu.js
new file mode 100644
index 00000000..7f9c354e
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/menu.js
@@ -0,0 +1,21 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Menu from '@components/navigation/menu';
+import { Router } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/navigation/not-found.js b/packages/cp-frontend/test/unit/components/navigation/not-found.js
new file mode 100644
index 00000000..acb297a9
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/not-found.js
@@ -0,0 +1,21 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import NotFound from '@components/navigation/not-found';
+import { Router } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/navigation/title.js b/packages/cp-frontend/test/unit/components/navigation/title.js
new file mode 100644
index 00000000..43a0d58e
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/navigation/title.js
@@ -0,0 +1,18 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import Title from '@components/navigation/title';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/service/__snapshots__/delete.js.snap b/packages/cp-frontend/test/unit/components/service/__snapshots__/delete.js.snap
new file mode 100644
index 00000000..626c18ef
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/service/__snapshots__/delete.js.snap
@@ -0,0 +1,259 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c4::-moz-focus-inner,
+.c4[type="button"]::-moz-focus-inner,
+.c4[type="reset"]::-moz-focus-inner,
+.c4[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c4:-moz-focusring,
+.c4[type="button"]:-moz-focusring,
+.c4[type="reset"]:-moz-focusring,
+.c4[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c4:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c4:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c4[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c4:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c4:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c4 + button {
+ margin-left: 1.25rem;
+}
+
+.c5 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c5::-moz-focus-inner,
+.c5[type="button"]::-moz-focus-inner,
+.c5[type="reset"]::-moz-focus-inner,
+.c5[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c5:-moz-focusring,
+.c5[type="button"]:-moz-focusring,
+.c5[type="reset"]:-moz-focusring,
+.c5[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c5:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c5:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c5:active,
+.c5:active:hover,
+.c5:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c5[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c5 + button {
+ margin-left: 1.25rem;
+}
+
+.c1 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c3 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c0 {
+ line-height: 1.25;
+ color: ;
+ margin: 0 0 0.75rem 0;
+}
+
+.c2 {
+ color: ;
+ margin: 0.75rem 0 1.875rem 0;
+}
+
+
+
+ Deleting a service:
+
+
+ Nginx
+
+
+ Deleting a service can lead to irreversible loss of data and failures in your application. Are you sure you want to continue?
+
+
+ Cancel
+
+
+ Delete service
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/service/__snapshots__/scale.js.snap b/packages/cp-frontend/test/unit/components/service/__snapshots__/scale.js.snap
new file mode 100644
index 00000000..453a8165
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/service/__snapshots__/scale.js.snap
@@ -0,0 +1,565 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c13 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c13::-moz-focus-inner,
+.c13[type="button"]::-moz-focus-inner,
+.c13[type="reset"]::-moz-focus-inner,
+.c13[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c13:-moz-focusring,
+.c13[type="button"]:-moz-focusring,
+.c13[type="reset"]:-moz-focusring,
+.c13[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c13:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c13:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c13:active,
+.c13:active:hover,
+.c13:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c13[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c13:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c13:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c13:active,
+.c13:active:hover,
+.c13:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c13 + button {
+ margin-left: 1.25rem;
+}
+
+.c14 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+ color: ;
+ background-color: ;
+ border-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+}
+
+.c14::-moz-focus-inner,
+.c14[type="button"]::-moz-focus-inner,
+.c14[type="reset"]::-moz-focus-inner,
+.c14[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c14:-moz-focusring,
+.c14[type="button"]:-moz-focusring,
+.c14[type="reset"]:-moz-focusring,
+.c14[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c14:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c14:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c14:active,
+.c14:active:hover,
+.c14:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c14[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c14:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c14:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c14:active,
+.c14:active:hover,
+.c14:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c14:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c14:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c14:active,
+.c14:active:hover,
+.c14:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c14 + button {
+ margin-left: 1.25rem;
+}
+
+.c1 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c3 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c12 {
+ vertical-align: middle;
+}
+
+.c10 {
+ vertical-align: middle;
+}
+
+.c0 {
+ line-height: 1.25;
+ color: ;
+ margin: 0 0 0.75rem 0;
+}
+
+.c2 {
+ color: ;
+ margin: 0.75rem 0 1.875rem 0;
+}
+
+.c9 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ background-color: ;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ text-align: center;
+ line-height: normal;
+ vertical-align: middle;
+ touch-action: manipulation;
+ min-width: 0;
+ cursor: pointer;
+}
+
+.c9::-moz-focus-inner,
+.c9[type="button"]::-moz-focus-inner,
+.c9[type="reset"]::-moz-focus-inner,
+.c9[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c9:-moz-focusring,
+.c9[type="button"]:-moz-focusring,
+.c9[type="reset"]:-moz-focusring,
+.c9[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c9 > svg {
+ fill: ;
+}
+
+.c9:focus {
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c9:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c9:focus,
+.c9:hover > svg {
+ fill: ;
+}
+
+.c9:active,
+.c9:active:hover,
+.c9:active:focus {
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c9:active,
+.c9:active:hover,
+.c9:active:focus > svg {
+ fill: ;
+}
+
+.c9[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c9[disabled] > svg {
+ fill: ;
+}
+
+.c9[disabled]:focus,
+.c9[disabled]:hover,
+.c9[disabled]:active,
+.c9[disabled]:active:hover,
+.c9[disabled]:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c9[disabled]:focus,
+.c9[disabled]:hover,
+.c9[disabled]:active,
+.c9[disabled]:active:hover,
+.c9[disabled]:active:focus > svg {
+ fill: ;
+}
+
+.c11 {
+ margin-left: 0.375rem;
+}
+
+.c4 {
+ padding: 0.35em 0.75em 0.625em;
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ width: 100%;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c5 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+ float: right;
+}
+
+.c6 {
+ margin-bottom: 1.5rem;
+}
+
+.c8 {
+ box-sizing: border-box;
+ width: 100%;
+ height: 3rem;
+ margin-bottom: 0.5rem;
+ margin-top: 0.5rem;
+ padding: 0.8125rem 1.125rem;
+ border-radius: 0.25rem;
+ background-color: ;
+ border: 0.0625rem solid;
+ font-size: 0.9375rem;
+ line-height: normal !important;
+ font-weight: 400;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ outline: 0;
+}
+
+.c8:focus {
+ border-color: ;
+ outline: 0;
+}
+
+.c7 {
+ width: 7.5rem;
+ margin: 0 0.75rem 0 0;
+ vertical-align: middle;
+}
+
+@media only screen and (min-width:48.0625rem) {
+ .c5 {
+ text-align: right;
+ }
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/service/delete.js b/packages/cp-frontend/test/unit/components/service/delete.js
new file mode 100644
index 00000000..fa91e810
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/service/delete.js
@@ -0,0 +1,19 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+import { service } from '../../mocks';
+
+import Delete from '@components/service/delete';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/service/scale.js b/packages/cp-frontend/test/unit/components/service/scale.js
new file mode 100644
index 00000000..0e669c93
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/service/scale.js
@@ -0,0 +1,24 @@
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+import { reduxForm } from 'redux-form';
+import { Store, service } from '../../mocks';
+
+import Scale from '@components/service/scale';
+
+const TestScaleForm = reduxForm({ form: 'testScaleForm' })(Scale);
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/services/__snapshots__/empty.js.snap b/packages/cp-frontend/test/unit/components/services/__snapshots__/empty.js.snap
new file mode 100644
index 00000000..d347b882
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/services/__snapshots__/empty.js.snap
@@ -0,0 +1,336 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c5 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c9 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: block;
+ -webkit-flex-flow: column;
+ -ms-flex-flow: column;
+ flex-flow: column;
+}
+
+.c8 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c8::-moz-focus-inner,
+.c8[type="button"]::-moz-focus-inner,
+.c8[type="reset"]::-moz-focus-inner,
+.c8[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c8:-moz-focusring,
+.c8[type="button"]:-moz-focusring,
+.c8[type="reset"]:-moz-focusring,
+.c8[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c8:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c8:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c8:active,
+.c8:active:hover,
+.c8:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c8[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c8:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c8:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c8:active,
+.c8:active:hover,
+.c8:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c8 + button {
+ margin-left: 1.25rem;
+}
+
+.c3 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c6 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 0.9375rem;
+}
+
+.c7 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c4 {
+ box-shadow: 0 2px 0 0 rgba(0,0,0,0.05);
+ border: solid 1px #d8d8d8;
+ padding: 0.375rem 1.125rem 1.5rem;
+}
+
+.c4 + .c4 {
+ margin-top: 1.5rem;
+}
+
+@media only screen and (min-width:64em) {
+ .c5 {
+ -webkit-flex-basis: 83.33333333333334%;
+ -ms-flex-basis: 83.33333333333334%;
+ flex-basis: 83.33333333333334%;
+ max-width: 83.33333333333334%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c9 {
+ -webkit-flex-basis: 75%;
+ -ms-flex-basis: 75%;
+ flex-basis: 75%;
+ max-width: 75%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+
+
+
+ Services
+
+
+
+
+
+
+
+ Import your services
+
+
+ You can import your services from a Git repository hosting service. Learn more.
+
+
+ from GitHub
+
+
+ from GitLab
+
+
+ from BitBucket
+
+
+
+
+
+
+
+
+ Alternatively, you can upload or edit manifest file.
+
+
+ Manifest is a file describing your services. It is similar to Docker Compose file. You can upload a file from you local machine or edit it manually. Learn more.
+
+
+ Upload manifest
+
+
+ Edit manifest
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/services/__snapshots__/list-item.js.snap b/packages/cp-frontend/test/unit/components/services/__snapshots__/list-item.js.snap
new file mode 100644
index 00000000..b09216af
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/services/__snapshots__/list-item.js.snap
@@ -0,0 +1,762 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c7 {
+ color: ;
+ color: ;
+ text-decoration: none;
+}
+
+.c14 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ border-radius: 0;
+}
+
+.c14::-moz-focus-inner,
+.c14[type="button"]::-moz-focus-inner,
+.c14[type="reset"]::-moz-focus-inner,
+.c14[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c14:-moz-focusring,
+.c14[type="button"]:-moz-focusring,
+.c14[type="reset"]:-moz-focusring,
+.c14[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c14:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c14:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c14:active,
+.c14:active:hover,
+.c14:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c14[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c14 + button {
+ margin-left: 1.25rem;
+}
+
+.c4 {
+ font-size: 0.9375rem;
+ line-height: 1.5;
+ color: ;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 600;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-flex-grow: 2;
+ -ms-flex-grow: 2;
+ flex-grow: 2;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ width: 100%;
+ padding: 0.75rem 1.125rem 0 1.125rem;
+ color: ;
+ -webkit-flex-grow: 6;
+ -ms-flex-grow: 6;
+ flex-grow: 6;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ width: auto;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding: 0 1.125rem;
+}
+
+.c19 {
+ font-size: 0.9375rem;
+ line-height: 1.5;
+ color: ;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 600;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-flex-grow: 2;
+ -ms-flex-grow: 2;
+ flex-grow: 2;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ width: 100%;
+ padding: 0.75rem 1.125rem 0 1.125rem;
+}
+
+.c8 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+}
+
+.c18 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ padding-bottom: 0.75rem;
+}
+
+.c9 {
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.c0 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ position: relative;
+ height: auto;
+ min-height: 7.875rem;
+ margin-bottom: 0.625rem;
+ border: 0.0625rem solid;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ margin-right: 0rem;
+ margin-left: 0rem;
+}
+
+.c3 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ position: relative;
+ height: auto;
+ min-height: 7.875rem;
+ margin-bottom: 0.625rem;
+ border: 0.0625rem solid;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ margin-right: 0rem;
+ margin-left: 0rem;
+ min-height: auto;
+ height: 3rem;
+ margin-bottom: 1rem;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.1);
+}
+
+.c2 {
+ position: absolute;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ background-color: ;
+ border: solid 0.0625rem;
+ box-shadow: none;
+ width: calc(100% + 0.125rem);
+ margin: -0.0625rem -0.0625rem 0 -0.0625rem;
+}
+
+.c17 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ margin: 0;
+ height: auto;
+ padding-top: 0;
+ min-width: auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+}
+
+.c12 {
+ display: block;
+ -webkit-flex: 0 0 2.9375rem;
+ -ms-flex: 0 0 2.9375rem;
+ flex: 0 0 2.9375rem;
+ border-left: 0.0625rem solid;
+ box-sizing: border-box;
+ border-left-color: ;
+}
+
+.c13 {
+ position: relative;
+ border-width: 0;
+ box-shadow: none;
+ width: 100%;
+ min-width: 2.875rem !important;
+ height: 7.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ overflow-x: visible;
+ overflow-y: visible;
+ height: 2.875rem;
+}
+
+.c13:focus {
+ border-width: 0;
+}
+
+.c13:hover {
+ border-width: 0;
+}
+
+.c13:active,
+.c13:active:hover,
+.c13:active:focus {
+ border-width: 0;
+}
+
+.c15 {
+ position: absolute;
+ left: 50%;
+ top: 35%;
+}
+
+.c16 {
+ margin: 0 0 0.125rem -0.125rem;
+ border-radius: 50%;
+ background-color: ;
+ width: 0.25rem;
+ height: 0.25rem;
+}
+
+.c11 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+ display: inline-block;
+ color: undefined;
+ margin-left: 1.5rem;
+}
+
+.c11::first-letter {
+ text-transform: capitalize;
+}
+
+.c10 {
+ position: absolute;
+}
+
+.c10 > svg {
+ fill: undefined;
+}
+
+.c20 {
+ display: inline-block;
+ margin: 0 0 0.9375rem 0;
+ height: 3.375rem;
+ width: 12.5rem;
+}
+
+.c21 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0 0 0.375rem 0;
+ font-size: 0.8125rem;
+ line-height: 0.8125rem;
+}
+
+.c1 {
+ position: relative;
+}
+
+.c5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: left;
+ -webkit-justify-content: left;
+ -ms-flex-pack: left;
+ justify-content: left;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c6 {
+ color: ;
+}
+
+
+
+
+
+
+
+
+
+
+ icon: instances
+
+
+
+
+
+ 1 instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ instance
+ running
+
+
+
+
+
+
+`;
+
+exports[`renders child without throwing 1`] = `
+.c2 {
+ font-size: 0.9375rem;
+ line-height: 1.5;
+ color: ;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 600;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-flex-grow: 2;
+ -ms-flex-grow: 2;
+ flex-grow: 2;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ width: 100%;
+ padding: 0.75rem 1.125rem 0 1.125rem;
+}
+
+.c3 {
+ display: inline-block;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.c6 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ padding-bottom: 0.75rem;
+}
+
+.c7 {
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.c0 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ position: relative;
+ height: auto;
+ min-height: 7.875rem;
+ margin-bottom: 0.625rem;
+ border: 0.0625rem solid;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ margin-right: 0rem;
+ margin-left: 0rem;
+ box-shadow: none;
+}
+
+.c1 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ margin: 0;
+ height: auto;
+ padding-top: 0;
+ min-width: auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+}
+
+.c5 {
+ display: inline-block;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-style: normal;
+ font-stretch: normal;
+ font-size: 0.875rem;
+ -webkit-box-pack: end;
+ -webkit-justify-content: flex-end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+}
+
+.c4 {
+ display: inline-block;
+ padding: 0 1.125rem;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+}
+
+.c8 {
+ display: inline-block;
+ margin: 0 0 0.9375rem 0;
+ height: 3.375rem;
+ width: 12.5rem;
+}
+
+.c9 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0 0 0.375rem 0;
+ font-size: 0.8125rem;
+ line-height: 0.8125rem;
+}
+
+
+
+
+
+ Nginx
+
+
+
+
+ 1
+
+ instance
+
+
+
+
+
+
+ 1
+ instance
+ running
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/components/services/__snapshots__/quick-actions.js.snap b/packages/cp-frontend/test/unit/components/services/__snapshots__/quick-actions.js.snap
new file mode 100644
index 00000000..0c5bfc4c
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/services/__snapshots__/quick-actions.js.snap
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `null`;
diff --git a/packages/cp-frontend/test/unit/components/services/empty.js b/packages/cp-frontend/test/unit/components/services/empty.js
new file mode 100644
index 00000000..1d0e072f
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/services/empty.js
@@ -0,0 +1,22 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import EmptyServices from '@components/services/empty.js';
+import { Router } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/services/list-item.js b/packages/cp-frontend/test/unit/components/services/list-item.js
new file mode 100644
index 00000000..41a9861d
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/services/list-item.js
@@ -0,0 +1,31 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import ServiceListItem from '@components/services/list-item.js';
+import { Router, service } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
+
+it('renders child without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/services/quick-actions.js b/packages/cp-frontend/test/unit/components/services/quick-actions.js
new file mode 100644
index 00000000..416794bd
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/services/quick-actions.js
@@ -0,0 +1,22 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import ServicesQuickActions from '@components/services/quick-actions.js';
+import { Router, service } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/components/services/status.js b/packages/cp-frontend/test/unit/components/services/status.js
new file mode 100644
index 00000000..8850cae2
--- /dev/null
+++ b/packages/cp-frontend/test/unit/components/services/status.js
@@ -0,0 +1,20 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import ServiceStatus from '@components/services/status.js';
+import { service } from '../../mocks';
+
+xit('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/deployment-group/__snapshots__/delete.js.snap b/packages/cp-frontend/test/unit/containers/deployment-group/__snapshots__/delete.js.snap
new file mode 100644
index 00000000..1e835e7e
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-group/__snapshots__/delete.js.snap
@@ -0,0 +1,335 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c4::-moz-focus-inner,
+.c4[type="button"]::-moz-focus-inner,
+.c4[type="reset"]::-moz-focus-inner,
+.c4[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c4:-moz-focusring,
+.c4[type="button"]:-moz-focusring,
+.c4[type="reset"]:-moz-focusring,
+.c4[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c4:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c4:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c4[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c4 + button {
+ margin-left: 1.25rem;
+}
+
+.c9 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c9::-moz-focus-inner,
+.c9[type="button"]::-moz-focus-inner,
+.c9[type="reset"]::-moz-focus-inner,
+.c9[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c9:-moz-focusring,
+.c9[type="button"]:-moz-focusring,
+.c9[type="reset"]:-moz-focusring,
+.c9[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c9:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c9:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c9:active,
+.c9:active:hover,
+.c9:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c9[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c9:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c9:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c9:active,
+.c9:active:hover,
+.c9:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c9 + button {
+ margin-left: 1.25rem;
+}
+
+.c6 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c8 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c3 {
+ background-color: #FFFFFF;
+ padding: 0.75rem;
+ min-width: auto;
+ border: none;
+ box-shadow: none;
+}
+
+.c3:hover,
+.c3:focus,
+.c3:active,
+.c3:active:hover,
+.c3:active:focus {
+ background-color: #FFFFFF;
+ border: none;
+ box-shadow: none;
+}
+
+.c0 {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background-color: rgba(250,250,250,0.5);
+ z-index: 100;
+}
+
+.c1 {
+ position: absolute;
+ left: 50%;
+ top: 33.33%;
+ padding: 2.25rem 2.25rem 2.25rem 2.25rem;
+ background-color: ;
+ box-shadow: 0 0 0.375rem 0.0625rem rgba(0,0,0,0.1);
+ width: 28.75rem;
+ margin: 0 auto 0 -14.375rem;
+ z-index: 101;
+}
+
+.c2 {
+ position: absolute;
+ right: 0.375rem;
+ top: 0.1875rem;
+}
+
+.c5 {
+ line-height: 1.25;
+ color: ;
+ margin: 0 0 0.75rem 0;
+}
+
+.c7 {
+ color: ;
+ margin: 0.75rem 0 1.875rem 0;
+}
+
+
+
+
+
+
+ icon: close
+
+
+
+
+
+
+ Deleting a deployment group:
+
+
+ Wordpress Blog Example
+
+
+ Deleting a deployment group will also remove all of the services and instances associated with that deployment group. Are you sure you want to continue?
+
+
+ Cancel
+
+
+ Delete deployment group
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/deployment-group/delete.js b/packages/cp-frontend/test/unit/containers/deployment-group/delete.js
new file mode 100644
index 00000000..8801bed0
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-group/delete.js
@@ -0,0 +1,27 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { DeploymentGroupDelete } from '@containers/deployment-group/delete';
+import { Router, Store, deploymentGroup } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+ {}}
+ />
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/create.js.snap b/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/create.js.snap
new file mode 100644
index 00000000..97eb6197
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/create.js.snap
@@ -0,0 +1,536 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c8 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c8::-moz-focus-inner,
+.c8[type="button"]::-moz-focus-inner,
+.c8[type="reset"]::-moz-focus-inner,
+.c8[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c8:-moz-focusring,
+.c8[type="button"]:-moz-focusring,
+.c8[type="reset"]:-moz-focusring,
+.c8[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c8:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c8:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c8:active,
+.c8:active:hover,
+.c8:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c8[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c8 + button {
+ margin-left: 1.25rem;
+}
+
+.c3 {
+ float: left;
+ background-color: ;
+}
+
+.c6 {
+ fill: none;
+ fill: ;
+}
+
+.c12 {
+ fill: none;
+}
+
+.c5 {
+ display: inline-block;
+ border-radius: 50%;
+ width: 1.125rem;
+ height: 1.125rem;
+ background: inherit;
+ border: 0.0625rem solid;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border: 0.0625rem solid;
+ background: ;
+}
+
+.c11 {
+ display: inline-block;
+ border-radius: 50%;
+ width: 1.125rem;
+ height: 1.125rem;
+ background: inherit;
+ border: 0.0625rem solid;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c7 {
+ padding: 0.75rem 1.125rem 0.75rem 0.75rem;
+ background-color: #FFFFFF;
+ color: #464646;
+ text-align: left;
+ border: none;
+ box-shadow: none;
+ line-height: 1.6;
+ cursor: default;
+}
+
+.c7:focus {
+ background-color: #FFFFFF;
+ border: none;
+ color: #464646;
+}
+
+.c7:hover {
+ background-color: #FFFFFF;
+ border: none;
+ color: #464646;
+}
+
+.c7:active,
+.c7:active:hover,
+.c7:active:focus {
+ background-color: #FFFFFF;
+ border: none;
+ color: #464646;
+}
+
+.c4 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ position: relative;
+ z-index: 10;
+ padding-left: 2.5rem;
+ border-top: 0.0625rem solid;
+ border-bottom: 0.0625rem solid;
+ border-top: 0.0625rem solid;
+ border-bottom: 0.0625rem solid;
+ border-left: 0.0625rem solid;
+ padding-left: 0.8125rem;
+ border-right: 0.0625rem solid;
+ border-right: none;
+}
+
+.c10 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ position: relative;
+ z-index: 9;
+ padding-left: 2.5rem;
+ border-top: 0.0625rem solid;
+ border-bottom: 0.0625rem solid;
+ border-right: 0.0625rem solid;
+ border-right: none;
+}
+
+.c14 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ position: relative;
+ z-index: 8;
+ padding-left: 2.5rem;
+ border-top: 0.0625rem solid;
+ border-bottom: 0.0625rem solid;
+ border-right: 0.0625rem solid;
+ border-right: none;
+}
+
+.c15 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ position: relative;
+ z-index: 7;
+ padding-left: 2.5rem;
+ border-top: 0.0625rem solid;
+ border-bottom: 0.0625rem solid;
+ border-right: 0.0625rem solid;
+}
+
+.c9 {
+ position: absolute;
+ top: 0;
+ right: -1.6875rem;
+ border: solid;
+ border-width: 0 0.0625rem 0.0625rem 0;
+ padding: 1.06875rem;
+ -webkit-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ margin: 0.4rem 0.625rem 0.4rem 0.625rem;
+ border-color: ;
+}
+
+.c13 {
+ position: absolute;
+ top: 0;
+ right: -1.6875rem;
+ border: solid;
+ border-width: 0 0.0625rem 0.0625rem 0;
+ padding: 1.06875rem;
+ -webkit-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ margin: 0.4rem 0.625rem 0.4rem 0.625rem;
+}
+
+.c16 {
+ position: absolute;
+ top: 0;
+ right: -1.6875rem;
+ border: solid;
+ border-width: 0 0.0625rem 0.0625rem 0;
+ padding: 1.06875rem;
+ -webkit-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ margin: 0.4rem 0.625rem 0.4rem 0.625rem;
+ display: none;
+}
+
+.c2 {
+ display: table;
+ list-style-type: none;
+ padding: 0;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: block;
+ -webkit-flex-flow: column;
+ -ms-flex-flow: column;
+ flex-flow: column;
+}
+
+.c1 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+ margin-top: 0.125rem;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+
+ Creating deployment group
+
+
+
+
+
+
+
+ tick
+
+
+
+
+
+ Name the group
+
+
+
+
+
+
+
+
+
+ tick
+
+
+
+
+
+ Define Services
+
+
+
+
+
+
+
+
+
+ tick
+
+
+
+
+
+ Define Environment
+
+
+
+
+
+
+
+
+
+ tick
+
+
+
+
+
+ Review and deploy
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/import.js.snap b/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/import.js.snap
new file mode 100644
index 00000000..6635c40d
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/import.js.snap
@@ -0,0 +1,183 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: block;
+ -webkit-flex-flow: column;
+ -ms-flex-flow: column;
+ flex-flow: column;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-content: center;
+ -ms-flex-line-pack: center;
+ align-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c3 {
+ fill: ;
+ stroke: ;
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+}
+
+.c4 {
+ fill: ;
+ stroke: ;
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 0.5s;
+ animation-delay: 0.5s;
+}
+
+.c5 {
+ fill: ;
+ stroke: ;
+ -webkit-animation: iCqDak 1.5s ease-out 0s infinite;
+ animation: iCqDak 1.5s ease-out 0s infinite;
+ -webkit-animation-delay: 1s;
+ animation-delay: 1s;
+}
+
+.c1 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+ margin-top: 0.125rem;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+}
+
+.c2 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-content: center;
+ -ms-flex-line-pack: center;
+ align-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+}
+
+.c6 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ text-align: center;
+ margin-bottom: 0;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+
+ Importing deployment group
+
+
+
+
+
+
+
+
+ Loading...
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/list.js.snap b/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/list.js.snap
new file mode 100644
index 00000000..3dfc053e
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-groups/__snapshots__/list.js.snap
@@ -0,0 +1,423 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: block;
+ -webkit-flex-flow: column;
+ -ms-flex-flow: column;
+ flex-flow: column;
+}
+
+.c8 {
+ display: inline-block;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ background-color: ;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ text-align: center;
+ line-height: normal;
+ vertical-align: middle;
+ touch-action: manipulation;
+ min-width: 0;
+ cursor: pointer;
+}
+
+.c8 > svg {
+ fill: ;
+}
+
+.c8:focus {
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c8:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c8:focus,
+.c8:hover > svg {
+ fill: ;
+}
+
+.c8:active,
+.c8:active:hover,
+.c8:active:focus {
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c8:active,
+.c8:active:hover,
+.c8:active:focus > svg {
+ fill: ;
+}
+
+.c8[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c8[disabled] > svg {
+ fill: ;
+}
+
+.c8[disabled]:focus,
+.c8[disabled]:hover,
+.c8[disabled]:active,
+.c8[disabled]:active:hover,
+.c8[disabled]:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c8[disabled]:focus,
+.c8[disabled]:hover,
+.c8[disabled]:active,
+.c8[disabled]:active:hover,
+.c8[disabled]:active:focus > svg {
+ fill: ;
+}
+
+.c1 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+ margin-top: 0.125rem;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ margin-top: -0.4375rem;
+}
+
+.c4 {
+ position: relative;
+ text-decoration: none;
+ color: ;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ border: solid 0.0625rem;
+ margin-top: 1.25rem;
+ margin-bottom: 0;
+ padding: 1.125rem;
+ min-height: 16.125rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.c4:last-child {
+ margin-bottom: 1.25rem;
+}
+
+.c9 {
+ position: relative;
+ text-decoration: none;
+ color: ;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ border: solid 0.0625rem;
+ margin-top: 1.25rem;
+ margin-bottom: 0;
+ padding: 1.125rem;
+ min-height: 16.125rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ background-color: ;
+}
+
+.c9:last-child {
+ margin-bottom: 1.25rem;
+}
+
+.c9:hover {
+ background-color: ;
+}
+
+.c11 {
+ border: solid 0.0625rem;
+ border-radius: 50%;
+ width: 3rem;
+ height: 3rem;
+ line-height: 3rem;
+ font-size: 1.5rem;
+ text-align: center;
+ margin-bottom: 1.25rem;
+}
+
+.c12 {
+ font-size: 80%;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.125rem;
+ font-size: 0.875rem;
+ font-weight: 600;
+ text-align: center;
+}
+
+.c6 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 0.9375rem;
+ margin-top: 0.625rem;
+ font-weight: 600;
+}
+
+.c5 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ text-decoration: none;
+ color: ;
+}
+
+.c10 {
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-align-content: center;
+ -ms-flex-line-pack: center;
+ align-content: center;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.c7 {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ border: none;
+}
+
+.c7:hover,
+.c7:focus,
+.c7:active,
+.c7:active:hover,
+.c7:active:focus {
+ background-color: ;
+}
+
+.c7:focus > svg,
+.c7:hover > svg {
+ fill: ;
+}
+
+.c7:active > svg,
+.c7:active:hover > svg,
+.c7:active:focus > svg {
+ fill: ;
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 100%;
+ -ms-flex-basis: 100%;
+ flex-basis: 100%;
+ max-width: 100%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c3 {
+ -webkit-flex-basis: 33.333333333333336%;
+ -ms-flex-basis: 33.333333333333336%;
+ flex-basis: 33.333333333333336%;
+ max-width: 33.333333333333336%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c3 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-basis: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c3 {
+ -webkit-flex-basis: 25%;
+ -ms-flex-basis: 25%;
+ flex-basis: 25%;
+ max-width: 25%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+
+ Deployment groups
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/deployment-groups/create.js b/packages/cp-frontend/test/unit/containers/deployment-groups/create.js
new file mode 100644
index 00000000..322f37e4
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-groups/create.js
@@ -0,0 +1,31 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import DeploymentGroupCreate from '@containers/deployment-groups/create.js';
+import { Router, Store } from '../../mocks';
+
+it('renders without throwing', () => {
+ const props = {
+ match: {
+ params: {
+ stage: ''
+ }
+ }
+ }
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/deployment-groups/import.js b/packages/cp-frontend/test/unit/containers/deployment-groups/import.js
new file mode 100644
index 00000000..d1515a53
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-groups/import.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import DeploymentGroupImport from '@containers/deployment-groups/import.js';
+import { Router, Store } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/deployment-groups/list.js b/packages/cp-frontend/test/unit/containers/deployment-groups/list.js
new file mode 100644
index 00000000..df3869d8
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/deployment-groups/list.js
@@ -0,0 +1,27 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { DeploymentGroupList } from '@containers/deployment-groups/list.js';
+import { Router, Store, deploymentGroups } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/instances/__snapshots__/tooltip.js.snap b/packages/cp-frontend/test/unit/containers/instances/__snapshots__/tooltip.js.snap
new file mode 100644
index 00000000..32af1618
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/instances/__snapshots__/tooltip.js.snap
@@ -0,0 +1,89 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c1 {
+ position: absolute;
+ top: auto;
+ left: auto;
+ bottom: ;
+ right: auto;
+}
+
+.c1:focus {
+ outline: none;
+}
+
+.c2 {
+ position: relative;
+ display: inline-block;
+ top: 0.3125rem;
+ left: -50%;
+ margin: 0;
+ padding: 0.75rem 0;
+ background-color: ;
+ border: 0.0625rem solid;
+ box-shadow: 0 0.125rem 0.375rem 0.0625rem rgba(0,0,0,0.1);
+ border-radius: 0.25rem;
+ z-index: 1000;
+}
+
+.c2:after,
+.c2:before {
+ content: "";
+ position: absolute;
+ bottom: 100%;
+ left: 50%;
+ height: 0;
+ width: 0;
+ border: solid transparent;
+}
+
+.c2:after {
+ border-bottom-color: ;
+ border-width: 0.1875rem;
+ margin-left: -0.1875rem;
+}
+
+.c2:before {
+ border-bottom-color: ;
+ border-width: 0.3125rem;
+ margin-left: -0.3125rem;
+}
+
+.c3 {
+ margin: 0 1.125rem;
+ color: ;
+ white-space: nowrap;
+}
+
+.c0 {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+
+
+
+
+ Your instance is operating as expected
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/instances/list.js b/packages/cp-frontend/test/unit/containers/instances/list.js
new file mode 100644
index 00000000..efc1ccce
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/instances/list.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { InstanceList } from '@containers/instances/list.js';
+import { Router, Store, instances } from '../../mocks';
+
+xit('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/instances/tooltip.js b/packages/cp-frontend/test/unit/containers/instances/tooltip.js
new file mode 100644
index 00000000..7a597a9b
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/instances/tooltip.js
@@ -0,0 +1,31 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { InstancesTooltip } from '@containers/instances/tooltip.js';
+import { Router, Store, instance } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/manifest/__snapshots__/edit-or-create.js.snap b/packages/cp-frontend/test/unit/containers/manifest/__snapshots__/edit-or-create.js.snap
new file mode 100644
index 00000000..b5166b44
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/manifest/__snapshots__/edit-or-create.js.snap
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `null`;
diff --git a/packages/cp-frontend/test/unit/containers/manifest/edit-or-create.js b/packages/cp-frontend/test/unit/containers/manifest/edit-or-create.js
new file mode 100644
index 00000000..927cab0d
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/manifest/edit-or-create.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import DeploymentGroupEditOrCreate from '@containers/manifest/edit-or-create.js';
+import { Router, Store } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/breadcrumb.js.snap b/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/breadcrumb.js.snap
new file mode 100644
index 00000000..a2f3deeb
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/breadcrumb.js.snap
@@ -0,0 +1,95 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c1 {
+ margin-right: auto;
+ margin-left: auto;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+}
+
+.c3 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+ font-weight: 400;
+ color: ;
+ margin: 1.25rem 0 1.125rem 0;
+ display: inline-block;
+}
+
+.c4 {
+ border: solid;
+ border-width: 0 0.125rem 0.125rem 0;
+ display: inline-block;
+ padding: 0.125rem;
+ -webkit-transform: rotate(-45deg);
+ -ms-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ margin: 0.1875rem 0.625rem 0.1875rem 0.625rem;
+}
+
+.c0 {
+ border-bottom: solid 0.0625rem;
+}
+
+@media only screen and (min-width:48em) {
+ .c1 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c1 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c1 {
+ width: 76rem;
+ }
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/header.js.snap b/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/header.js.snap
new file mode 100644
index 00000000..c679ee1b
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/header.js.snap
@@ -0,0 +1,123 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c2 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+ text-transform: uppercase;
+ color: ;
+ font-size: 1.8125rem;
+ margin: 0;
+}
+
+.c1 {
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ padding: 0.9375rem 0;
+}
+
+.c5 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ font-weight: 600;
+ text-align: center;
+ color: ;
+ margin: 0;
+}
+
+.c4 {
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-align-self: auto;
+ -ms-flex-item-align: auto;
+ align-self: auto;
+ -webkit-order: 0;
+ -ms-flex-order: 0;
+ order: 0;
+ padding: 0.9375rem 0;
+ width: 6.25rem;
+ max-width: 6.25rem;
+}
+
+.c0 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: nowrap;
+ -ms-flex-wrap: nowrap;
+ flex-wrap: nowrap;
+ -webkit-box-pack: space-between;
+ -webkit-justify-content: space-between;
+ -ms-flex-pack: space-between;
+ justify-content: space-between;
+ -webkit-align-content: stretch;
+ -ms-flex-line-pack: stretch;
+ align-content: stretch;
+ -webkit-align-items: stretch;
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ background-color: ;
+ max-height: 3.3125rem;
+ min-height: 3.3125rem;
+ padding: 0 1.125rem;
+ line-height: 1.5625rem;
+}
+
+.c3 {
+ border-style: none;
+ width: 5.4375rem;
+ height: 1.5625rem;
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/menu.js.snap b/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/menu.js.snap
new file mode 100644
index 00000000..d38170de
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/navigation/__snapshots__/menu.js.snap
@@ -0,0 +1,3 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `null`;
diff --git a/packages/cp-frontend/test/unit/containers/navigation/breadcrumb.js b/packages/cp-frontend/test/unit/containers/navigation/breadcrumb.js
new file mode 100644
index 00000000..c76c1a52
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/navigation/breadcrumb.js
@@ -0,0 +1,29 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { Breadcrumb } from '@containers/navigation/breadcrumb.js';
+import { Router, Store } from '../../mocks';
+
+it('renders without throwing', () => {
+ const props = {
+ location: {
+ pathname: ''
+ }
+ }
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/navigation/header.js b/packages/cp-frontend/test/unit/containers/navigation/header.js
new file mode 100644
index 00000000..8426c0d4
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/navigation/header.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { Header } from '@containers/navigation/header.js';
+import { Router, Store } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/navigation/menu.js b/packages/cp-frontend/test/unit/containers/navigation/menu.js
new file mode 100644
index 00000000..381499e9
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/navigation/menu.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { Menu } from '@containers/navigation/menu.js';
+import { Router, Store } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/navigation/not-found-hoc.js b/packages/cp-frontend/test/unit/containers/navigation/not-found-hoc.js
new file mode 100644
index 00000000..5a51aa5d
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/navigation/not-found-hoc.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import NotFoundHoc from '@containers/navigation/not-found-hoc.js';
+import { Router, Store } from '../../mocks';
+
+xit('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/service/__snapshots__/delete.js.snap b/packages/cp-frontend/test/unit/containers/service/__snapshots__/delete.js.snap
new file mode 100644
index 00000000..8bf9fac3
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/service/__snapshots__/delete.js.snap
@@ -0,0 +1,335 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c4::-moz-focus-inner,
+.c4[type="button"]::-moz-focus-inner,
+.c4[type="reset"]::-moz-focus-inner,
+.c4[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c4:-moz-focusring,
+.c4[type="button"]:-moz-focusring,
+.c4[type="reset"]:-moz-focusring,
+.c4[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c4:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c4:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c4[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c4 + button {
+ margin-left: 1.25rem;
+}
+
+.c9 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c9::-moz-focus-inner,
+.c9[type="button"]::-moz-focus-inner,
+.c9[type="reset"]::-moz-focus-inner,
+.c9[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c9:-moz-focusring,
+.c9[type="button"]:-moz-focusring,
+.c9[type="reset"]:-moz-focusring,
+.c9[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c9:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c9:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c9:active,
+.c9:active:hover,
+.c9:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c9[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c9:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c9:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c9:active,
+.c9:active:hover,
+.c9:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c9 + button {
+ margin-left: 1.25rem;
+}
+
+.c6 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c8 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c3 {
+ background-color: #FFFFFF;
+ padding: 0.75rem;
+ min-width: auto;
+ border: none;
+ box-shadow: none;
+}
+
+.c3:hover,
+.c3:focus,
+.c3:active,
+.c3:active:hover,
+.c3:active:focus {
+ background-color: #FFFFFF;
+ border: none;
+ box-shadow: none;
+}
+
+.c0 {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background-color: rgba(250,250,250,0.5);
+ z-index: 100;
+}
+
+.c1 {
+ position: absolute;
+ left: 50%;
+ top: 33.33%;
+ padding: 2.25rem 2.25rem 2.25rem 2.25rem;
+ background-color: ;
+ box-shadow: 0 0 0.375rem 0.0625rem rgba(0,0,0,0.1);
+ width: 28.75rem;
+ margin: 0 auto 0 -14.375rem;
+ z-index: 101;
+}
+
+.c2 {
+ position: absolute;
+ right: 0.375rem;
+ top: 0.1875rem;
+}
+
+.c5 {
+ line-height: 1.25;
+ color: ;
+ margin: 0 0 0.75rem 0;
+}
+
+.c7 {
+ color: ;
+ margin: 0.75rem 0 1.875rem 0;
+}
+
+
+
+
+
+
+ icon: close
+
+
+
+
+
+
+ Deleting a service:
+
+
+ Nginx
+
+
+ Deleting a service can lead to irreversible loss of data and failures in your application. Are you sure you want to continue?
+
+
+ Cancel
+
+
+ Delete service
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/service/__snapshots__/scale.js.snap b/packages/cp-frontend/test/unit/containers/service/__snapshots__/scale.js.snap
new file mode 100644
index 00000000..1258b080
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/service/__snapshots__/scale.js.snap
@@ -0,0 +1,733 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c4 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c4::-moz-focus-inner,
+.c4[type="button"]::-moz-focus-inner,
+.c4[type="reset"]::-moz-focus-inner,
+.c4[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c4:-moz-focusring,
+.c4[type="button"]:-moz-focusring,
+.c4[type="reset"]:-moz-focusring,
+.c4[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c4:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c4:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c4[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c4 + button {
+ margin-left: 1.25rem;
+}
+
+.c18 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c18::-moz-focus-inner,
+.c18[type="button"]::-moz-focus-inner,
+.c18[type="reset"]::-moz-focus-inner,
+.c18[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c18:-moz-focusring,
+.c18[type="button"]:-moz-focusring,
+.c18[type="reset"]:-moz-focusring,
+.c18[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c18:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c18:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c18:active,
+.c18:active:hover,
+.c18:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c18[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c18:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c18:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c18:active,
+.c18:active:hover,
+.c18:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c18 + button {
+ margin-left: 1.25rem;
+}
+
+.c19 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ color: ;
+ background-color: ;
+ border-color: ;
+ color: ;
+ background-color: ;
+ border-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+}
+
+.c19::-moz-focus-inner,
+.c19[type="button"]::-moz-focus-inner,
+.c19[type="reset"]::-moz-focus-inner,
+.c19[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c19:-moz-focusring,
+.c19[type="button"]:-moz-focusring,
+.c19[type="reset"]:-moz-focusring,
+.c19[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c19:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c19:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c19:active,
+.c19:active:hover,
+.c19:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c19[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c19:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c19:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c19:active,
+.c19:active:hover,
+.c19:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c19:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c19:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c19:active,
+.c19:active:hover,
+.c19:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c19 + button {
+ margin-left: 1.25rem;
+}
+
+.c6 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+}
+
+.c8 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+}
+
+.c17 {
+ vertical-align: middle;
+}
+
+.c15 {
+ vertical-align: middle;
+}
+
+.c3 {
+ background-color: #FFFFFF;
+ padding: 0.75rem;
+ min-width: auto;
+ border: none;
+ box-shadow: none;
+}
+
+.c3:hover,
+.c3:focus,
+.c3:active,
+.c3:active:hover,
+.c3:active:focus {
+ background-color: #FFFFFF;
+ border: none;
+ box-shadow: none;
+}
+
+.c0 {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background-color: rgba(250,250,250,0.5);
+ z-index: 100;
+}
+
+.c1 {
+ position: absolute;
+ left: 50%;
+ top: 33.33%;
+ padding: 2.25rem 2.25rem 2.25rem 2.25rem;
+ background-color: ;
+ box-shadow: 0 0 0.375rem 0.0625rem rgba(0,0,0,0.1);
+ width: 28.75rem;
+ margin: 0 auto 0 -14.375rem;
+ z-index: 101;
+}
+
+.c2 {
+ position: absolute;
+ right: 0.375rem;
+ top: 0.1875rem;
+}
+
+.c5 {
+ line-height: 1.25;
+ color: ;
+ margin: 0 0 0.75rem 0;
+}
+
+.c7 {
+ color: ;
+ margin: 0.75rem 0 1.875rem 0;
+}
+
+.c14 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ background-color: ;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ text-align: center;
+ line-height: normal;
+ vertical-align: middle;
+ touch-action: manipulation;
+ min-width: 0;
+ cursor: pointer;
+}
+
+.c14::-moz-focus-inner,
+.c14[type="button"]::-moz-focus-inner,
+.c14[type="reset"]::-moz-focus-inner,
+.c14[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c14:-moz-focusring,
+.c14[type="button"]:-moz-focusring,
+.c14[type="reset"]:-moz-focusring,
+.c14[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c14 > svg {
+ fill: ;
+}
+
+.c14:focus {
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c14:hover {
+ background-color: ;
+ border-color: ;
+}
+
+.c14:focus,
+.c14:hover > svg {
+ fill: ;
+}
+
+.c14:active,
+.c14:active:hover,
+.c14:active:focus {
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c14:active,
+.c14:active:hover,
+.c14:active:focus > svg {
+ fill: ;
+}
+
+.c14[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+ color: ;
+ background-color: ;
+ border-color: ;
+}
+
+.c14[disabled] > svg {
+ fill: ;
+}
+
+.c14[disabled]:focus,
+.c14[disabled]:hover,
+.c14[disabled]:active,
+.c14[disabled]:active:hover,
+.c14[disabled]:active:focus {
+ background-color: ;
+ border-color: ;
+}
+
+.c14[disabled]:focus,
+.c14[disabled]:hover,
+.c14[disabled]:active,
+.c14[disabled]:active:hover,
+.c14[disabled]:active:focus > svg {
+ fill: ;
+}
+
+.c16 {
+ margin-left: 0.375rem;
+}
+
+.c9 {
+ padding: 0.35em 0.75em 0.625em;
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ width: 100%;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c10 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+ float: right;
+}
+
+.c11 {
+ margin-bottom: 1.5rem;
+}
+
+.c13 {
+ box-sizing: border-box;
+ width: 100%;
+ height: 3rem;
+ margin-bottom: 0.5rem;
+ margin-top: 0.5rem;
+ padding: 0.8125rem 1.125rem;
+ border-radius: 0.25rem;
+ background-color: ;
+ border: 0.0625rem solid;
+ font-size: 0.9375rem;
+ line-height: normal !important;
+ font-weight: 400;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ outline: 0;
+}
+
+.c13:focus {
+ border-color: ;
+ outline: 0;
+}
+
+.c12 {
+ width: 7.5rem;
+ margin: 0 0.75rem 0 0;
+ vertical-align: middle;
+}
+
+@media only screen and (min-width:48.0625rem) {
+ .c10 {
+ text-align: right;
+ }
+}
+
+
+
+
+
+
+ icon: close
+
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/service/delete.js b/packages/cp-frontend/test/unit/containers/service/delete.js
new file mode 100644
index 00000000..73b01fe9
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/service/delete.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { ServiceDelete } from '@containers/service/delete.js';
+import { Router, Store, service } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/service/scale.js b/packages/cp-frontend/test/unit/containers/service/scale.js
new file mode 100644
index 00000000..069f60ff
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/service/scale.js
@@ -0,0 +1,24 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { ServiceScale } from '@containers/service/scale';
+import { Router, Store, service } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/services/__snapshots__/list.js.snap b/packages/cp-frontend/test/unit/containers/services/__snapshots__/list.js.snap
new file mode 100644
index 00000000..0f382b91
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/__snapshots__/list.js.snap
@@ -0,0 +1,592 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c9 {
+ color: ;
+ color: ;
+ text-decoration: none;
+}
+
+.c16 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+ border-radius: 0;
+}
+
+.c16::-moz-focus-inner,
+.c16[type="button"]::-moz-focus-inner,
+.c16[type="reset"]::-moz-focus-inner,
+.c16[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c16:-moz-focusring,
+.c16[type="button"]:-moz-focusring,
+.c16[type="reset"]:-moz-focusring,
+.c16[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c16:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c16:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c16:active,
+.c16:active:hover,
+.c16:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c16[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c16 + button {
+ margin-left: 1.25rem;
+}
+
+.c6 {
+ font-size: 0.9375rem;
+ line-height: 1.5;
+ color: ;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 600;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-flex-grow: 2;
+ -ms-flex-grow: 2;
+ flex-grow: 2;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ width: 100%;
+ padding: 0.75rem 1.125rem 0 1.125rem;
+ color: ;
+ -webkit-flex-grow: 6;
+ -ms-flex-grow: 6;
+ flex-grow: 6;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ width: auto;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding: 0 1.125rem;
+}
+
+.c21 {
+ font-size: 0.9375rem;
+ line-height: 1.5;
+ color: ;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 600;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-flex-grow: 2;
+ -ms-flex-grow: 2;
+ flex-grow: 2;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ width: 100%;
+ padding: 0.75rem 1.125rem 0 1.125rem;
+}
+
+.c10 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+}
+
+.c20 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ -webkit-flex-grow: 1;
+ -ms-flex-grow: 1;
+ flex-grow: 1;
+ -webkit-flex-basis: 5.625rem;
+ -ms-flex-basis: 5.625rem;
+ flex-basis: 5.625rem;
+ padding-bottom: 0.75rem;
+}
+
+.c11 {
+ -webkit-box-pack: start;
+ -webkit-justify-content: flex-start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ position: relative;
+ height: auto;
+ min-height: 7.875rem;
+ margin-bottom: 0.625rem;
+ border: 0.0625rem solid;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ margin-right: 0rem;
+ margin-left: 0rem;
+}
+
+.c5 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ position: relative;
+ height: auto;
+ min-height: 7.875rem;
+ margin-bottom: 0.625rem;
+ border: 0.0625rem solid;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ margin-right: 0rem;
+ margin-left: 0rem;
+ min-height: auto;
+ height: 3rem;
+ margin-bottom: 1rem;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.1);
+}
+
+.c4 {
+ position: absolute;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ background-color: ;
+ border: solid 0.0625rem;
+ box-shadow: none;
+ width: calc(100% + 0.125rem);
+ margin: -0.0625rem -0.0625rem 0 -0.0625rem;
+}
+
+.c19 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ margin: 0;
+ height: auto;
+ padding-top: 0;
+ min-width: auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+}
+
+.c14 {
+ display: block;
+ -webkit-flex: 0 0 2.9375rem;
+ -ms-flex: 0 0 2.9375rem;
+ flex: 0 0 2.9375rem;
+ border-left: 0.0625rem solid;
+ box-sizing: border-box;
+ border-left-color: ;
+}
+
+.c15 {
+ position: relative;
+ border-width: 0;
+ box-shadow: none;
+ width: 100%;
+ min-width: 2.875rem !important;
+ height: 7.75rem;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ overflow-x: visible;
+ overflow-y: visible;
+ height: 2.875rem;
+}
+
+.c15:focus {
+ border-width: 0;
+}
+
+.c15:hover {
+ border-width: 0;
+}
+
+.c15:active,
+.c15:active:hover,
+.c15:active:focus {
+ border-width: 0;
+}
+
+.c17 {
+ position: absolute;
+ left: 50%;
+ top: 35%;
+}
+
+.c18 {
+ margin: 0 0 0.125rem -0.125rem;
+ border-radius: 50%;
+ background-color: ;
+ width: 0.25rem;
+ height: 0.25rem;
+}
+
+.c13 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ font-style: normal;
+ font-stretch: normal;
+ color: ;
+ display: inline-block;
+ color: undefined;
+ margin-left: 1.5rem;
+}
+
+.c13::first-letter {
+ text-transform: capitalize;
+}
+
+.c12 {
+ position: absolute;
+}
+
+.c12 > svg {
+ fill: undefined;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+ -webkit-flex: 1 1 auto;
+ -ms-flex: 1 1 auto;
+ flex: 1 1 auto;
+ display: block;
+ -webkit-flex-flow: column;
+ -ms-flex-flow: column;
+ flex-flow: column;
+}
+
+.c22 {
+ display: inline-block;
+ margin: 0 0 0.9375rem 0;
+ height: 3.375rem;
+ width: 12.5rem;
+}
+
+.c23 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ line-height: 1.5rem;
+ font-size: 0.9375rem;
+ margin: 0 0 0.375rem 0;
+ font-size: 0.8125rem;
+ line-height: 0.8125rem;
+}
+
+.c3 {
+ position: relative;
+}
+
+.c7 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-box-pack: left;
+ -webkit-justify-content: left;
+ -ms-flex-pack: left;
+ justify-content: left;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.c8 {
+ color: ;
+}
+
+.c1 {
+ position: relative;
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+ icon: instances
+
+
+
+
+
+ 1 instance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ instance
+ running
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/services/__snapshots__/menu.js.snap b/packages/cp-frontend/test/unit/containers/services/__snapshots__/menu.js.snap
new file mode 100644
index 00000000..eaaa50ef
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/__snapshots__/menu.js.snap
@@ -0,0 +1,301 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c3 {
+ box-sizing: border-box;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ padding-right: 0.5rem;
+ padding-left: 0.5rem;
+}
+
+.c0 {
+ margin-right: auto;
+ margin-left: auto;
+ padding-top: 1.1875rem;
+}
+
+.c4 {
+ padding: 0.35em 0.75em 0.625em;
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ border: none;
+ overflow: hidden;
+ width: 100%;
+ height: auto;
+ -webkit-margin-start: 0;
+ -webkit-margin-end: 0;
+ -webkit-padding-before: 0;
+ -webkit-padding-start: 0;
+ -webkit-padding-end: 0;
+ -webkit-padding-after: 0;
+}
+
+.c9 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ display: none;
+}
+
+.c9[type="checkbox"],
+.c9[type="radio"] {
+ box-sizing: border-box;
+ padding: 0;
+}
+
+.c9[type="number"]::-webkit-inner-spin-button,
+.c9[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+.c9[type="search"] {
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+ outline-offset: -0.125rem;
+}
+
+.c9[type="search"]::-webkit-search-cancel-button,
+.c9[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+}
+
+.c9::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ font: inherit;
+}
+
+.c9:checked + label {
+ border-radius: 0.25rem;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ color: ;
+}
+
+.c9:selected + label {
+ border-radius: 0.25rem;
+ background-color: ;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+ color: ;
+}
+
+.c9:disabled + label {
+ color: ;
+}
+
+.c10 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ position: absolute;
+ box-sizing: border-box;
+ width: 7.5rem;
+ height: 3rem;
+ top: 0;
+ left: 0;
+ text-align: center;
+ padding-top: 0.75rem;
+ color: ;
+}
+
+.c10:hover {
+ color: ;
+}
+
+.c8 {
+ position: relative;
+ vertical-align: text-bottom;
+ width: 7.5rem;
+ height: 3rem;
+}
+
+.c7 {
+ display: inline-block;
+ list-style-type: none;
+ vertical-align: text-bottom;
+ border-top: 0.0625rem solid;
+ border-bottom: 0.0625rem solid;
+ border-left: 0.0625rem solid;
+}
+
+.c7:first-of-type {
+ border-radius: 0.25rem 0 0 0.25rem;
+}
+
+.c7:last-of-type {
+ border-radius: 0 0.25rem 0.25rem 0;
+ border-right: 0.0625rem solid;
+}
+
+.c6 {
+ display: inline-block;
+ margin: 0;
+ padding: 0;
+ box-shadow: 0 0.125rem 0 0 rgba(0,0,0,0.05);
+}
+
+.c1 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 500;
+ font-size: 1.5rem;
+ margin-top: 0.125rem;
+ -webkit-flex: 0 0 auto;
+ -ms-flex: 0 0 auto;
+ flex: 0 0 auto;
+ -webkit-align-self: stretch;
+ -ms-flex-item-align: stretch;
+ align-self: stretch;
+}
+
+.c5 {
+ box-sizing: border-box;
+ color: inherit;
+ display: table;
+ max-width: 100%;
+ padding: 0;
+ white-space: normal;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 600;
+ float: left;
+ padding-top: 0.75rem;
+ margin-right: 0.5625rem;
+}
+
+.c2 {
+ box-sizing: border-box;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex: 0 1 auto;
+ -ms-flex: 0 1 auto;
+ flex: 0 1 auto;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+ -webkit-flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ margin-right: -0.5rem;
+ margin-left: -0.5rem;
+ margin-bottom: 1.125rem;
+}
+
+@media only screen and (min-width:0em) {
+ .c3 {
+ -webkit-flex-basis: 41.66666666666667%;
+ -ms-flex-basis: 41.66666666666667%;
+ flex-basis: 41.66666666666667%;
+ max-width: 41.66666666666667%;
+ display: block;
+ }
+}
+
+@media only screen and (min-width:48em) {
+ .c0 {
+ width: 46rem;
+ }
+}
+
+@media only screen and (min-width:64em) {
+ .c0 {
+ width: 61rem;
+ }
+}
+
+@media only screen and (min-width:75em) {
+ .c0 {
+ width: 76rem;
+ }
+}
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/services/__snapshots__/quick-actions.js.snap b/packages/cp-frontend/test/unit/containers/services/__snapshots__/quick-actions.js.snap
new file mode 100644
index 00000000..040735d7
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/__snapshots__/quick-actions.js.snap
@@ -0,0 +1,254 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c5 {
+ font-family: sans-serif;
+ font-size: 100%;
+ line-height: 1.15;
+ margin: 0;
+ overflow: visible;
+ text-transform: none;
+ -webkit-appearance: button;
+ -moz-appearance: button;
+ appearance: button;
+ min-width: 7.5rem;
+ box-sizing: border-box;
+ display: inline-block;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ margin: 0;
+ padding: 0.9375rem 1.125rem;
+ position: relative;
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ font-size: 0.9375rem;
+ text-align: center;
+ font-style: normal;
+ font-stretch: normal;
+ line-height: normal;
+ -webkit-letter-spacing: normal;
+ -moz-letter-spacing: normal;
+ -ms-letter-spacing: normal;
+ letter-spacing: normal;
+ text-decoration: none;
+ white-space: nowrap;
+ vertical-align: middle;
+ touch-action: manipulation;
+ cursor: pointer;
+ color: ;
+ background-image: none;
+ background-color: ;
+ border-radius: 0.25rem;
+ border: solid 0.0625rem;
+}
+
+.c5::-moz-focus-inner,
+.c5[type="button"]::-moz-focus-inner,
+.c5[type="reset"]::-moz-focus-inner,
+.c5[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+.c5:-moz-focusring,
+.c5[type="button"]:-moz-focusring,
+.c5[type="reset"]:-moz-focusring,
+.c5[type="submit"]:-moz-focusring {
+ outline: 0.0625rem dotted ButtonText;
+}
+
+.c5:focus {
+ outline: 0;
+ text-decoration: none;
+ background-color: ;
+ border-color: ;
+}
+
+.c5:hover {
+ background-color: ;
+ border: solid 0.0625rem;
+}
+
+.c5:active,
+.c5:active:hover,
+.c5:active:focus {
+ background-image: none;
+ outline: 0;
+ background-color: ;
+ border-color: ;
+}
+
+.c5[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c5 + button {
+ margin-left: 1.25rem;
+}
+
+.c1 {
+ position: absolute;
+ top: auto;
+ left: auto;
+ bottom: ;
+ right: auto;
+}
+
+.c1:focus {
+ outline: none;
+}
+
+.c2 {
+ position: relative;
+ display: inline-block;
+ top: 0.3125rem;
+ left: -50%;
+ margin: 0;
+ padding: 0.75rem 0;
+ background-color: ;
+ border: 0.0625rem solid;
+ box-shadow: 0 0.125rem 0.375rem 0.0625rem rgba(0,0,0,0.1);
+ border-radius: 0.25rem;
+ z-index: 1000;
+}
+
+.c2:after,
+.c2:before {
+ content: "";
+ position: absolute;
+ bottom: 100%;
+ left: 50%;
+ height: 0;
+ width: 0;
+ border: solid transparent;
+}
+
+.c2:after {
+ border-bottom-color: #FFFFFF;
+ border-width: 0.1875rem;
+ margin-left: -0.1875rem;
+}
+
+.c2:before {
+ border-bottom-color: #D8D8D8;
+ border-width: 0.3125rem;
+ margin-left: -0.3125rem;
+}
+
+.c4 {
+ width: 100%;
+ padding: 0.375rem 1.125rem;
+ background-color: #FFFFFF;
+ color: #464646;
+ text-align: left;
+ border: none;
+ box-shadow: none;
+}
+
+.c4:focus {
+ background-color: #FFFFFF;
+ color: #3B46CC;
+ border: none;
+}
+
+.c4:hover {
+ background-color: #FFFFFF;
+ color: #3B46CC;
+ border: none;
+}
+
+.c4:active,
+.c4:active:hover,
+.c4:active:focus {
+ background-color: #FFFFFF;
+ color: #3B46CC;
+ border: none;
+}
+
+.c4[disabled] {
+ cursor: not-allowed;
+ pointer-events: none;
+}
+
+.c6 {
+ border-top: 0.0625rem solid;
+ margin: 0.375rem 0 0.5625rem 0;
+}
+
+.c3 {
+ margin: 0;
+ padding: 0;
+ list-style-type: none;
+}
+
+.c0 {
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+
+
+
+
+
+
+
+ Scale
+
+
+
+
+ Restart
+
+
+
+
+ Stop
+
+
+
+
+
+ Delete
+
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/services/__snapshots__/topology.js.snap b/packages/cp-frontend/test/unit/containers/services/__snapshots__/topology.js.snap
new file mode 100644
index 00000000..509beb49
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/__snapshots__/topology.js.snap
@@ -0,0 +1,253 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`renders without throwing 1`] = `
+.c5 {
+ stroke: ;
+ stroke-width: 1.5;
+ stroke: ;
+}
+
+.c3 {
+ stroke: ;
+ fill: ;
+ stroke-width: 1.5;
+ rx: 4;
+ ry: 4;
+ stroke: ;
+ fill: ;
+}
+
+.c4 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ fill: ;
+ font-size: 16px;
+ font-weight: 600;
+ fill: ;
+ cursor: pointer;
+}
+
+.c9 {
+ font-family: "Libre Franklin",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica,sans-serif;
+ font-weight: 400;
+ fill: ;
+ font-size: 12px;
+ opacity: 0.8;
+ fill: ;
+}
+
+.c7 {
+ opacity: 0;
+ cursor: pointer;
+}
+
+.c7:focus {
+ outline: none;
+}
+
+.c6 {
+ fill: ;
+ fill: ;
+}
+
+.c8 {
+ fill: ;
+ fill: ;
+}
+
+.c2 {
+ width: 100%;
+ height: 1000px;
+}
+
+.c2:not(:root) {
+ overflow: hidden;
+}
+
+.c0 {
+ padding: 1.5rem;
+ background-color: ;
+}
+
+.c1 {
+ position: relative;
+}
+
+
+
+
+
+
+
+
+
+
+
+ Nginx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ icon: error
+
+
+
+
+
+
+
+
+
+
+
+
+
+ icon: instances
+
+
+
+
+
+ 1 inst.
+
+
+
+ 1
+ running
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+`;
diff --git a/packages/cp-frontend/test/unit/containers/services/list.js b/packages/cp-frontend/test/unit/containers/services/list.js
new file mode 100644
index 00000000..d51a26c6
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/list.js
@@ -0,0 +1,27 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { ServiceList } from '@containers/services/list.js';
+import { Router, Store, deploymentGroup, services } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/services/menu.js b/packages/cp-frontend/test/unit/containers/services/menu.js
new file mode 100644
index 00000000..5fcca50d
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/menu.js
@@ -0,0 +1,32 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { ServicesMenu } from '@containers/services/menu.js';
+import { Router, Store } from '../../mocks';
+
+it('renders without throwing', () => {
+ const props = {
+ location: {
+ pathname: ''
+ },
+ history: {
+ push: () => {}
+ }
+ }
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/services/quick-actions.js b/packages/cp-frontend/test/unit/containers/services/quick-actions.js
new file mode 100644
index 00000000..08968d9c
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/quick-actions.js
@@ -0,0 +1,30 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { ServicesQuickActions } from '@containers/services/quick-actions.js';
+import { Router, Store, service } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/containers/services/topology.js b/packages/cp-frontend/test/unit/containers/services/topology.js
new file mode 100644
index 00000000..fbad64ea
--- /dev/null
+++ b/packages/cp-frontend/test/unit/containers/services/topology.js
@@ -0,0 +1,26 @@
+
+/**
+ * @jest-environment jsdom
+ */
+
+import React from 'react';
+import renderer from 'react-test-renderer';
+import 'jest-styled-components';
+
+import { ServicesTopology } from '@containers/services/topology.js';
+import { Router, Store, services } from '../../mocks';
+
+it('renders without throwing', () => {
+ const tree = renderer
+ .create(
+
+
+
+
+
+ )
+ .toJSON();
+ expect(tree).toMatchSnapshot();
+});
diff --git a/packages/cp-frontend/test/unit/mocks/data.js b/packages/cp-frontend/test/unit/mocks/data.js
new file mode 100644
index 00000000..918ae1c1
--- /dev/null
+++ b/packages/cp-frontend/test/unit/mocks/data.js
@@ -0,0 +1,37 @@
+export const instance = {
+ "id": "309ecd9f-ac03-474b-aff7-4bd2e743296c",
+ "name": "wordpress_01",
+ "serviceId": "be227788-74f1-4e5b-a85f-b5c71cbae8d8",
+ "deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
+ "machineId": "011f7479-2d45-442d-99bf-7f6216954cc8",
+ "status": "RUNNING",
+ "healthy": "HEALTHY"
+};
+
+export const service = {
+ "id": "081a792c-47e0-4439-924b-2efa9788ae9e",
+ "slug": "nginx",
+ "name": "Nginx",
+ "deploymentGroupId": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
+ "connections": ["be227788-74f1-4e5b-a85f-b5c71cbae8d8"],
+ "instances": [instance],
+ "instanceStatuses": [{ status: "RUNNING", count: 1 }]
+};
+
+export const deploymentGroup = {
+ "id": "e0ea0c02-55cc-45fe-8064-3e5176a59401",
+ "slug": "wordpress-blog-example",
+ "name": "Wordpress Blog Example"
+};
+
+export const services = [
+ service
+];
+
+export const instances = [
+ instance
+];
+
+export const deploymentGroups = [
+ deploymentGroup
+]
diff --git a/packages/cp-frontend/test/unit/mocks/index.js b/packages/cp-frontend/test/unit/mocks/index.js
index cf9bab85..2226401f 100644
--- a/packages/cp-frontend/test/unit/mocks/index.js
+++ b/packages/cp-frontend/test/unit/mocks/index.js
@@ -1,3 +1,4 @@
export { default as Router } from './router';
export { default as Store } from './store';
export { default as Theme } from './theme';
+export * from './data';
diff --git a/packages/cp-gql-mock-server/src/resolvers.js b/packages/cp-gql-mock-server/src/resolvers.js
index 04b840e0..1e014555 100644
--- a/packages/cp-gql-mock-server/src/resolvers.js
+++ b/packages/cp-gql-mock-server/src/resolvers.js
@@ -164,13 +164,13 @@ const deleteDeploymentGroup = options => {
.then(services =>
Promise.all(
services.map(service =>
- handleStatusUpdateRequest(
- service.id,
- 'DELETING',
- 'STOPPING',
- 'DELETED',
- 'DELETED'
- )
+ handleStatusUpdateRequest({
+ serviceId: service.id,
+ transitionalServiceStatus: 'DELETING',
+ transitionalInstancesStatus: 'STOPPING',
+ serviceStatus: 'DELETED',
+ instancesStatus: 'DELETED'
+ })
)
)
)
@@ -334,8 +334,8 @@ const updateServiceAndInstancesStatus = (
instancesStatus
) => {
return Promise.all([
- getServices({ id: serviceId })/*,
- getServices({ parentId: serviceId })*/
+ getServices({ id: serviceId })/* ,
+ getServices({ parentId: serviceId }) */
])
.then(services => {
return services.reduce((services, service) => services.concat(service), [])
@@ -359,8 +359,8 @@ const updateServiceAndInstancesStatus = (
})
.then(() =>
Promise.all([
- getUnfilteredServices({ id: serviceId })/*,
- getUnfilteredServices({ parentId: serviceId })*/
+ getUnfilteredServices({ id: serviceId })/* ,
+ getUnfilteredServices({ parentId: serviceId }) */
])
)
.then(services =>
@@ -368,13 +368,13 @@ const updateServiceAndInstancesStatus = (
);
};
-const handleStatusUpdateRequest = (
+const handleStatusUpdateRequest = ({
serviceId,
transitionalServiceStatus,
transitionalInstancesStatus,
serviceStatus,
instancesStatus
-) => {
+}) => {
// this is what we need to delay
setTimeout(() => {
updateServiceAndInstancesStatus(serviceId, serviceStatus, instancesStatus);
@@ -393,13 +393,13 @@ const deleteServices = options => {
// instances transitional 'STOPPING'
// service 'DELETED'
// instances 'DELETED'
- const deleteService = handleStatusUpdateRequest(
- options.ids[0],
- 'DELETING',
- 'STOPPING',
- 'DELETED',
- 'DELETED'
- );
+ const deleteService = handleStatusUpdateRequest({
+ serviceId: options.ids[0],
+ transitionalServiceStatus: 'DELETING',
+ transitionalInstancesStatus: 'STOPPING',
+ serviceStatus: 'DELETED',
+ instancesStatus: 'DELETED'
+ });
return Promise.resolve(deleteService);
};
@@ -408,13 +408,13 @@ const stopServices = options => {
// instances transitional 'STOPPING'
// service 'STOPPED'
// instances 'STOPPED'
- const stopService = handleStatusUpdateRequest(
- options.ids[0],
- 'STOPPING',
- 'STOPPING',
- 'STOPPED',
- 'STOPPED'
- );
+ const stopService = handleStatusUpdateRequest({
+ serviceId: options.ids[0],
+ transitionalServiceStatus: 'STOPPING',
+ transitionalInstancesStatus: 'STOPPING',
+ serviceStatus: 'STOPPED',
+ instancesStatus: 'STOPPED'
+ });
return Promise.resolve(stopService);
};
@@ -423,13 +423,13 @@ const startServices = options => {
// instances transitional ...
// service 'ACTIVE'
// instances 'RUNNING'
- const startService = handleStatusUpdateRequest(
- options.ids[0],
- 'PROVISIONING',
- 'PROVISIONING',
- 'ACTIVE',
- 'RUNNING'
- );
+ const startService = handleStatusUpdateRequest({
+ serviceId: options.ids[0],
+ transitionalServiceStatus: 'PROVISIONING',
+ transitionalInstancesStatus: 'PROVISIONING',
+ serviceStatus: 'ACTIVE',
+ instancesStatus: 'RUNNING'
+ });
return Promise.resolve(startService);
};
@@ -438,13 +438,13 @@ const restartServices = options => {
// instances transitional 'STOPPING'
// service 'ACTIVE'
// instances 'RUNNING'
- const restartService = handleStatusUpdateRequest(
- options.ids[0],
- 'RESTARTING',
- 'STOPPING',
- 'ACTIVE',
- 'RUNNING'
- );
+ const restartService = handleStatusUpdateRequest({
+ serviceId: options.ids[0],
+ transitionalServiceStatus: 'RESTARTING',
+ transitionalInstancesStatus: 'STOPPING',
+ serviceStatus: 'ACTIVE',
+ instancesStatus: 'RUNNING'
+ });
return Promise.resolve(restartService);
};
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-0.snap
deleted file mode 100644
index 17d7347c..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-0.snap
+++ /dev/null
@@ -1,6 +0,0 @@
-exports[`Anchor-0 1`] = `
-
- Inspire the lazy
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-1.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-1.snap
deleted file mode 100644
index e451930e..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-1.snap
+++ /dev/null
@@ -1,13 +0,0 @@
-exports[`Anchor-1 1`] = `
-
-
- Inspire the lazy secondary
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-2.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-2.snap
deleted file mode 100644
index 25b8397a..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Anchor-2.snap
+++ /dev/null
@@ -1,14 +0,0 @@
-exports[`Anchor-2 1`] = `
-
-
- Inspire the lazy disabled
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Baseline-1.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Baseline-1.snap
deleted file mode 100644
index 67c25071..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Baseline-1.snap
+++ /dev/null
@@ -1,24 +0,0 @@
-exports[`Baseline-1 1`] = `
-
-
- margin-right: 1
-
-
- margin-right: 2
-
-
- margin-right: 3
-
-
- margin-right: 4
-
-
- hello
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Breadcrumb-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Breadcrumb-0.snap
deleted file mode 100644
index 0f6155cc..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Breadcrumb-0.snap
+++ /dev/null
@@ -1,42 +0,0 @@
-exports[`Breadcrumb-0 1`] = `
-
-
-
-
- Warp Records Blog
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-1.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Button-1.snap
deleted file mode 100644
index 130092cc..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-1.snap
+++ /dev/null
@@ -1,16 +0,0 @@
-exports[`Button-1 1`] = `
-
-
- Inspire the lazy
-
-
-
-
-
- Inspire the lazy (anchor)
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-3.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Button-3.snap
deleted file mode 100644
index 7e28bf82..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-3.snap
+++ /dev/null
@@ -1,16 +0,0 @@
-exports[`Button-3 1`] = `
-
-
- Inspire the brave
-
-
-
-
-
- Inspire the brave (anchor)
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-5.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Button-5.snap
deleted file mode 100644
index 93550d99..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-5.snap
+++ /dev/null
@@ -1,16 +0,0 @@
-exports[`Button-5 1`] = `
-
-
- Inspire the tertiary
-
-
-
-
-
- Inspire the tertiary (anchor)
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-7.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Button-7.snap
deleted file mode 100644
index a2fb3127..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Button-7.snap
+++ /dev/null
@@ -1,18 +0,0 @@
-exports[`Button-7 1`] = `
-
-
- Inspire the liars
-
-
-
-
-
- Inspire the liars (anchor)
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-0.snap
deleted file mode 100644
index d10854b9..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-0.snap
+++ /dev/null
@@ -1,62 +0,0 @@
-exports[`Card-0 1`] = `
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
- Outlet
-
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-10.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-10.snap
deleted file mode 100644
index 28b4cedb..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-10.snap
+++ /dev/null
@@ -1,173 +0,0 @@
-exports[`Card-10 1`] = `
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
- Outlet
-
-
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
- Outlet
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-12.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-12.snap
deleted file mode 100644
index 0099cbee..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-12.snap
+++ /dev/null
@@ -1,99 +0,0 @@
-exports[`Card-12 1`] = `
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-14.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-14.snap
deleted file mode 100644
index 31863ae9..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-14.snap
+++ /dev/null
@@ -1,200 +0,0 @@
-exports[`Card-14 1`] = `
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
- Outlet
-
-
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
- Outlet
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-2.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-2.snap
deleted file mode 100644
index 3ea39c42..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-2.snap
+++ /dev/null
@@ -1,62 +0,0 @@
-exports[`Card-2 1`] = `
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
- Outlet
-
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-4.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-4.snap
deleted file mode 100644
index 71d00002..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-4.snap
+++ /dev/null
@@ -1,85 +0,0 @@
-exports[`Card-4 1`] = `
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-6.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-6.snap
deleted file mode 100644
index 02c5eb9d..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-6.snap
+++ /dev/null
@@ -1,61 +0,0 @@
-exports[`Card-6 1`] = `
-
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-8.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Card-8.snap
deleted file mode 100644
index 71e91158..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Card-8.snap
+++ /dev/null
@@ -1,62 +0,0 @@
-exports[`Card-8 1`] = `
-
-
-
-
-
-
- Title
-
-
-
-
- Subtitle
-
-
-
-
-
-
- Outlet
-
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-0.snap
deleted file mode 100644
index f3559c5e..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-0.snap
+++ /dev/null
@@ -1,23 +0,0 @@
-exports[`Checkbox-0 1`] = `
-
-
-
-
-
-
-
- Check this out!
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-10.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-10.snap
deleted file mode 100644
index 46af1fdd..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-10.snap
+++ /dev/null
@@ -1,104 +0,0 @@
-exports[`Checkbox-10 1`] = `
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected meta error!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected group error!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected children error!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected inline error!
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-12.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-12.snap
deleted file mode 100644
index 27229462..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-12.snap
+++ /dev/null
@@ -1,104 +0,0 @@
-exports[`Checkbox-12 1`] = `
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected meta success!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected group success!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected children success!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected inline success!
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-14.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-14.snap
deleted file mode 100644
index 71807e76..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-14.snap
+++ /dev/null
@@ -1,27 +0,0 @@
-exports[`Checkbox-14 1`] = `
-
-
-
- Check this out!
-
-
-
-
-
-
- Thanks for ticking, you are a star!
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-16.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-16.snap
deleted file mode 100644
index 640f9e8b..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-16.snap
+++ /dev/null
@@ -1,85 +0,0 @@
-exports[`Checkbox-16 1`] = `
-
-
-
-
-
-
-
- Check this out!
-
-
-
-
-
-
-
-
-
-
- Thanks for ticking, you are a star!
-
-
-
-
-
-
-
-
-
-
-
-
- Thanks for ticking, you are a star!
-
-
-
-
-
-
- Check this out!
-
-
-
-
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-2.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-2.snap
deleted file mode 100644
index 8c6e46df..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-2.snap
+++ /dev/null
@@ -1,24 +0,0 @@
-exports[`Checkbox-2 1`] = `
-
-
-
-
-
-
-
- Check this out!
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-4.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-4.snap
deleted file mode 100644
index ce6eedb7..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-4.snap
+++ /dev/null
@@ -1,24 +0,0 @@
-exports[`Checkbox-4 1`] = `
-
-
-
-
-
-
-
- Check this out!
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-6.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-6.snap
deleted file mode 100644
index 4b0b1095..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-6.snap
+++ /dev/null
@@ -1,23 +0,0 @@
-exports[`Checkbox-6 1`] = `
-
-
-
- Check this out!
-
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-8.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-8.snap
deleted file mode 100644
index 3abc09b4..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Checkbox-8.snap
+++ /dev/null
@@ -1,104 +0,0 @@
-exports[`Checkbox-8 1`] = `
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected meta warning!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected group warning!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected children warning!
-
-
-
-
-
-
-
-
-
-
- Check this out!
-
-
- Unexpected inline warning!
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/CloseButton-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/CloseButton-0.snap
deleted file mode 100644
index 0dea6d18..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/CloseButton-0.snap
+++ /dev/null
@@ -1,19 +0,0 @@
-exports[`CloseButton-0 1`] = `
-
-
-
- icon: close
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Dropdown-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Dropdown-0.snap
deleted file mode 100644
index f16c5cf4..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Dropdown-0.snap
+++ /dev/null
@@ -1,54 +0,0 @@
-exports[`Dropdown-0 1`] = `
-
-
- Service
-
-
-
-
- Choose
-
-
- Wordpress
-
-
- Nginx
-
-
- Percona
-
-
-
-
- arrow: right
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Header-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Header-0.snap
deleted file mode 100644
index 090614e0..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Header-0.snap
+++ /dev/null
@@ -1,26 +0,0 @@
-exports[`Header-0 1`] = `
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/IconButton-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/IconButton-0.snap
deleted file mode 100644
index 6f3de216..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/IconButton-0.snap
+++ /dev/null
@@ -1,19 +0,0 @@
-exports[`IconButton-0 1`] = `
-
-
-
- icon: close
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Input-0.snap
deleted file mode 100644
index 65402be6..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-0.snap
+++ /dev/null
@@ -1,6 +0,0 @@
-exports[`Input-0 1`] = `
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-10.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Input-10.snap
deleted file mode 100644
index 6f2f76d9..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-10.snap
+++ /dev/null
@@ -1,21 +0,0 @@
-exports[`Input-10 1`] = `
-
-
-
- Email Address
-
-
-
- I\'m a children of meta
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-2.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Input-2.snap
deleted file mode 100644
index 7ce09340..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-2.snap
+++ /dev/null
@@ -1,21 +0,0 @@
-exports[`Input-2 1`] = `
-
-
-
- Email Address
-
-
-
- We\'ll never share your email with anyone else.
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-4.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Input-4.snap
deleted file mode 100644
index ca8504b4..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-4.snap
+++ /dev/null
@@ -1,80 +0,0 @@
-exports[`Input-4 1`] = `
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-6.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Input-6.snap
deleted file mode 100644
index f7ff09d5..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-6.snap
+++ /dev/null
@@ -1,80 +0,0 @@
-exports[`Input-6 1`] = `
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-8.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Input-8.snap
deleted file mode 100644
index 28d3170c..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Input-8.snap
+++ /dev/null
@@ -1,80 +0,0 @@
-exports[`Input-8 1`] = `
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/ProgressBar-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/ProgressBar-0.snap
deleted file mode 100644
index 74493e89..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/ProgressBar-0.snap
+++ /dev/null
@@ -1,93 +0,0 @@
-exports[`ProgressBar-0 1`] = `
-
-
-
-
-
-
- tick
-
-
-
-
-
- Name the group
-
-
-
-
-
-
-
-
-
- tick
-
-
-
-
-
- Define services
-
-
-
-
-
-
-
-
-
- tick
-
-
-
-
-
- Review and deploy
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-0.snap
deleted file mode 100644
index 4649e08a..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-0.snap
+++ /dev/null
@@ -1,78 +0,0 @@
-exports[`Radio-0 1`] = `
-
-
-
- Who killed the radio star?
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-10.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-10.snap
deleted file mode 100644
index fdd842d9..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-10.snap
+++ /dev/null
@@ -1,69 +0,0 @@
-exports[`Radio-10 1`] = `
-
-
-
- Who killed the radio star?
-
-
- I\'m a children of meta
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-2.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-2.snap
deleted file mode 100644
index c0bb74bf..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-2.snap
+++ /dev/null
@@ -1,68 +0,0 @@
-exports[`Radio-2 1`] = `
-
-
-
- Who killed the radio star?
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-4.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-4.snap
deleted file mode 100644
index 55301958..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-4.snap
+++ /dev/null
@@ -1,272 +0,0 @@
-exports[`Radio-4 1`] = `
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected inline error!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected group error!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected meta error!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected children error!
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-6.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-6.snap
deleted file mode 100644
index 0e1b2ee9..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-6.snap
+++ /dev/null
@@ -1,272 +0,0 @@
-exports[`Radio-6 1`] = `
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected inline warning!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected group warning!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected meta warning!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected children warning!
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-8.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-8.snap
deleted file mode 100644
index 29a0ccb1..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Radio-8.snap
+++ /dev/null
@@ -1,272 +0,0 @@
-exports[`Radio-8 1`] = `
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected inline success!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected group success!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected meta success!
-
-
-
-
-
-
-
- Who killed the radio star?
-
-
- Unexpected children success!
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/SectionList-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/SectionList-0.snap
deleted file mode 100644
index cc6b14ca..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/SectionList-0.snap
+++ /dev/null
@@ -1,47 +0,0 @@
-exports[`SectionList-0 1`] = `
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-0.snap
deleted file mode 100644
index 8ea6648c..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-0.snap
+++ /dev/null
@@ -1,30 +0,0 @@
-exports[`Select-0 1`] = `
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-10.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-10.snap
deleted file mode 100644
index a0cb8b1d..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-10.snap
+++ /dev/null
@@ -1,124 +0,0 @@
-exports[`Select-10 1`] = `
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected inline warning!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected group warning!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected meta warning!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected children warning!
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-12.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-12.snap
deleted file mode 100644
index 3b465704..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-12.snap
+++ /dev/null
@@ -1,124 +0,0 @@
-exports[`Select-12 1`] = `
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected inline error!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected group error!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected meta error!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected children error!
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-14.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-14.snap
deleted file mode 100644
index 3d32fbb9..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-14.snap
+++ /dev/null
@@ -1,124 +0,0 @@
-exports[`Select-14 1`] = `
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected inline success!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected group success!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected meta success!
-
-
-
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- Unexpected children success!
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-16.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-16.snap
deleted file mode 100644
index 05544919..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-16.snap
+++ /dev/null
@@ -1,32 +0,0 @@
-exports[`Select-16 1`] = `
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
- I\'m a children of meta!
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-2.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-2.snap
deleted file mode 100644
index ae1ceada..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-2.snap
+++ /dev/null
@@ -1,23 +0,0 @@
-exports[`Select-2 1`] = `
-
-
- Select a datacenter
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-4.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-4.snap
deleted file mode 100644
index f8b88ca4..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-4.snap
+++ /dev/null
@@ -1,35 +0,0 @@
-exports[`Select-4 1`] = `
-
-
-
- Your location
-
-
-
- Select Location
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-6.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-6.snap
deleted file mode 100644
index 0bdb0c20..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-6.snap
+++ /dev/null
@@ -1,34 +0,0 @@
-exports[`Select-6 1`] = `
-
-
-
- Your location
-
-
-
- Select Location
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-8.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Select-8.snap
deleted file mode 100644
index 9f65fd85..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Select-8.snap
+++ /dev/null
@@ -1,29 +0,0 @@
-exports[`Select-8 1`] = `
-
-
-
- Your location
-
-
-
- Amsterdam, EU
-
-
- San Francisco, USA
-
-
- Seoul, South Korea
-
-
- Tokyo, Japan
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Theme-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Theme-0.snap
deleted file mode 100644
index ee348803..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Theme-0.snap
+++ /dev/null
@@ -1,1227 +0,0 @@
-exports[`Theme-0 1`] = `
-
-
-
-
-
-
-
- Name
-
- :
-
- Primary
-
-
-
-
- Property
-
- :
-
-
- primary
-
-
-
-
-
- Hex
-
- :
-
-
- #3B46CC
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Primary Active
-
-
-
-
- Property
-
- :
-
-
- primaryActive
-
-
-
-
-
- Hex
-
- :
-
-
- #2D3884
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Primary Desaturated Active
-
-
-
-
- Property
-
- :
-
-
- primaryDesaturatedActive
-
-
-
-
-
- Hex
-
- :
-
-
- #2D3884
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Primary Desaturated
-
-
-
-
- Property
-
- :
-
-
- primaryDesaturated
-
-
-
-
-
- Hex
-
- :
-
-
- #3B4AAF
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Primary Desaturated Hover
-
-
-
-
- Property
-
- :
-
-
- primaryDesaturatedHover
-
-
-
-
-
- Hex
-
- :
-
-
- #475AD1
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Primary Hover
-
-
-
-
- Property
-
- :
-
-
- primaryHover
-
-
-
-
-
- Hex
-
- :
-
-
- #475AD1
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Brand Background
-
-
-
-
- Property
-
- :
-
-
- brandBackground
-
-
-
-
-
- Hex
-
- :
-
-
- #1E313B
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Green
-
-
-
-
- Property
-
- :
-
-
- green
-
-
-
-
-
- Hex
-
- :
-
-
- #00AF66
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Green Dark
-
-
-
-
- Property
-
- :
-
-
- greenDark
-
-
-
-
-
- Hex
-
- :
-
-
- #009858
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Orange
-
-
-
-
- Property
-
- :
-
-
- orange
-
-
-
-
-
- Hex
-
- :
-
-
- #E38200
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Input Warning
-
-
-
-
- Property
-
- :
-
-
- inputWarning
-
-
-
-
-
- Hex
-
- :
-
-
- #E38200
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Orange Dark
-
-
-
-
- Property
-
- :
-
-
- orangeDark
-
-
-
-
-
- Hex
-
- :
-
-
- #CB7400
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Red
-
-
-
-
- Property
-
- :
-
-
- red
-
-
-
-
-
- Hex
-
- :
-
-
- #DA4B42
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Input Error
-
-
-
-
- Property
-
- :
-
-
- inputError
-
-
-
-
-
- Hex
-
- :
-
-
- #DA4B42
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Red Dark
-
-
-
-
- Property
-
- :
-
-
- redDark
-
-
-
-
-
- Hex
-
- :
-
-
- #CD251B
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Secondary
-
-
-
-
- Property
-
- :
-
-
- secondary
-
-
-
-
-
- Hex
-
- :
-
-
- #464646
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Background
-
-
-
-
- Property
-
- :
-
-
- background
-
-
-
-
-
- Hex
-
- :
-
-
- #FAFAFA
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- White Hover
-
-
-
-
- Property
-
- :
-
-
- whiteHover
-
-
-
-
-
- Hex
-
- :
-
-
- #F8F8F8
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Text
-
-
-
-
- Property
-
- :
-
-
- text
-
-
-
-
-
- Hex
-
- :
-
-
- #494949
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Disabled
-
-
-
-
- Property
-
- :
-
-
- disabled
-
-
-
-
-
- Hex
-
- :
-
-
- #FAFAFA
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- White
-
-
-
-
- Property
-
- :
-
-
- white
-
-
-
-
-
- Hex
-
- :
-
-
- #FFFFFF
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- White Active
-
-
-
-
- Property
-
- :
-
-
- whiteActive
-
-
-
-
-
- Hex
-
- :
-
-
- #E9E9E9
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Topology Background
-
-
-
-
- Property
-
- :
-
-
- topologyBackground
-
-
-
-
-
- Hex
-
- :
-
-
- #343434
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Secondary Active
-
-
-
-
- Property
-
- :
-
-
- secondaryActive
-
-
-
-
-
- Hex
-
- :
-
-
- #343434
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Secondary Hover
-
-
-
-
- Property
-
- :
-
-
- secondaryHover
-
-
-
-
-
- Hex
-
- :
-
-
- #3F3F3F
-
-
-
-
-
-
-
-
-
-
-
- Name
-
- :
-
- Grey
-
-
-
-
- Property
-
- :
-
-
- grey
-
-
-
-
-
- Hex
-
- :
-
-
- #D8D8D8
-
-
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-0.snap
deleted file mode 100644
index bbd05014..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-0.snap
+++ /dev/null
@@ -1,71 +0,0 @@
-exports[`Toggle-0 1`] = `
-
-
-
- Who killed the radio star?
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-2.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-2.snap
deleted file mode 100644
index 1f07d41b..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-2.snap
+++ /dev/null
@@ -1,71 +0,0 @@
-exports[`Toggle-2 1`] = `
-
-
-
- Who killed the radio star?
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-4.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-4.snap
deleted file mode 100644
index 9cea076e..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-4.snap
+++ /dev/null
@@ -1,52 +0,0 @@
-exports[`Toggle-4 1`] = `
-
-
-
- Who killed the radio star?
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-6.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-6.snap
deleted file mode 100644
index e615642e..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Toggle-6.snap
+++ /dev/null
@@ -1,74 +0,0 @@
-exports[`Toggle-6 1`] = `
-
-
-
- Who killed the radio star?
-
-
-
-
-`;
diff --git a/packages/ui-toolkit/.snapguidist/__snapshots__/Tooltip-0.snap b/packages/ui-toolkit/.snapguidist/__snapshots__/Tooltip-0.snap
deleted file mode 100644
index b1d9221e..00000000
--- a/packages/ui-toolkit/.snapguidist/__snapshots__/Tooltip-0.snap
+++ /dev/null
@@ -1,42 +0,0 @@
-exports[`Tooltip-0 1`] = `
-
-
-
-
-
- Scale
-
-
-
-
- Restart
-
-
-
-
- Stop
-
-
-
-
-
- Delete
-
-
-
-
-
-`;