diff --git a/frontend/src/pages/instance/Editor/index.vue b/frontend/src/pages/instance/Editor/index.vue
index 8ef0880c3..249756ce4 100644
--- a/frontend/src/pages/instance/Editor/index.vue
+++ b/frontend/src/pages/instance/Editor/index.vue
@@ -37,6 +37,7 @@
+
Actions
@@ -73,6 +74,7 @@ import FfPage from '../../../layouts/Page.vue'
import instanceMixin from '../../../mixins/Instance.js'
import FfTabs from '../../../ui-components/components/tabs/Tabs.vue'
import ConfirmInstanceDeleteDialog from '../Settings/dialogs/ConfirmInstanceDeleteDialog.vue'
+import DashboardLink from '../components/DashboardLink.vue'
import EditorWrapper from './components/EditorWrapper.vue'
import DrawerTrigger from './components/drawer/DrawerTrigger.vue'
@@ -82,6 +84,7 @@ import ResizeBar from './components/drawer/ResizeBar.vue'
export default {
name: 'InstanceEditor',
components: {
+ DashboardLink,
MiddleCloseButton,
DrawerTrigger,
FfTabs,
@@ -269,13 +272,10 @@ export default {
.side-actions {
display: flex;
justify-content: flex-end;
+ gap: 10px;
align-items: center;
color: $ff-grey-500;
- .ff-btn--icon {
- margin-left: 10px;
- }
-
.close-drawer {
&:hover {
cursor: pointer;
diff --git a/test/e2e/frontend/cypress/tests/instances/editor.spec.js b/test/e2e/frontend/cypress/tests/instances/editor.spec.js
index 7992d3bde..1adfac1fc 100644
--- a/test/e2e/frontend/cypress/tests/instances/editor.spec.js
+++ b/test/e2e/frontend/cypress/tests/instances/editor.spec.js
@@ -85,7 +85,6 @@ describe('FlowForge - Instance editor', () => {
const instance = response.body.projects.find(
(project) => project.name === 'instance-1-1'
)
- instance.name = 'qweqwe'
cy.visit(`/instance/${instance.id}/editor`)
})
@@ -136,4 +135,68 @@ describe('FlowForge - Instance editor', () => {
cy.get('@tabs-wrapper').get('.logo').click()
cy.get('[data-el="page-name"]').contains('instance-1-1')
})
+
+ describe('The Immersive editor', () => {
+ it('doesn\'t display the dashboard button if there isn\'t a configured dashboard', () => {
+ cy.intercept(
+ 'GET',
+ '/api/*/projects/*',
+ (req) => req.reply(res => {
+ res.body = { ...res.body, ...{ meta: { versions: { launcher: '2.3.1' } } } }
+ return res
+ })).as('getProjects')
+
+ cy.login('bob', 'bbPassword')
+ cy.home()
+
+ cy.request('GET', '/api/v1/user/teams')
+ .then((response) => {
+ const team = response.body.teams.find(
+ (team) => team.name === 'ATeam'
+ )
+ return cy.request('GET', `/api/v1/teams/${team.id}/projects`)
+ })
+ .then((response) => {
+ const instance = response.body.projects.find(
+ (project) => project.name === 'instance-1-1'
+ )
+ cy.visit(`/instance/${instance.id}/editor`)
+ })
+
+ cy.get('[data-el="tabs-drawer"]').within(() => {
+ cy.get('[data-action="open-dashboard"]').should('not.exist')
+ })
+ })
+
+ it('displays the dashboard button if there\'s a configured dashboard available', () => {
+ cy.intercept(
+ 'GET',
+ '/api/*/projects/*',
+ (req) => req.reply(res => {
+ res.body = { ...res.body, ...{ meta: { versions: { launcher: '2.3.1' } }, settings: { dashboard2UI: '/dashboard' } } }
+ return res
+ })).as('getProjects')
+
+ cy.login('bob', 'bbPassword')
+ cy.home()
+
+ cy.request('GET', '/api/v1/user/teams')
+ .then((response) => {
+ const team = response.body.teams.find(
+ (team) => team.name === 'ATeam'
+ )
+ return cy.request('GET', `/api/v1/teams/${team.id}/projects`)
+ })
+ .then((response) => {
+ const instance = response.body.projects.find(
+ (project) => project.name === 'instance-1-1'
+ )
+ cy.visit(`/instance/${instance.id}/editor`)
+ })
+
+ cy.get('[data-el="tabs-drawer"]').within(() => {
+ cy.get('[data-action="open-dashboard"]').should('exist')
+ })
+ })
+ })
})