diff --git a/client/src/features/projectsV2/list/ProjectV2ListDisplay.tsx b/client/src/features/projectsV2/list/ProjectV2ListDisplay.tsx index 131ce82c3..aa7a4d58b 100644 --- a/client/src/features/projectsV2/list/ProjectV2ListDisplay.tsx +++ b/client/src/features/projectsV2/list/ProjectV2ListDisplay.tsx @@ -30,6 +30,7 @@ import PermissionsGuard from "../../permissionsV2/PermissionsGuard"; import { useGetUserQuery } from "../../usersV2/api/users.api"; import { NamespaceKind } from "../api/namespace.api"; import { useGetProjectsQuery } from "../api/projectV2.enhanced-api"; +import { PROJECT_CREATION_HASH } from "../new/createProjectV2.constants"; import ProjectShortHandDisplay from "../show/ProjectShortHandDisplay"; const DEFAULT_PER_PAGE = 5; @@ -221,7 +222,10 @@ function AddButtonForGroupNamespace({ namespace }: { namespace: string }) { "ms-auto", "my-auto" )} - to="/v2/projects/new" + to={{ + pathname: "/v2", + hash: PROJECT_CREATION_HASH, + }} > @@ -245,7 +249,10 @@ function AddButtonForUserNamespace({ namespace }: { namespace: string }) { "ms-auto", "my-auto" )} - to="/v2/projects/new" + to={{ + pathname: "/v2", + hash: PROJECT_CREATION_HASH, + }} > diff --git a/client/src/features/projectsV2/new/ProjectV2New.tsx b/client/src/features/projectsV2/new/ProjectV2New.tsx index 3b487ebcc..761846072 100644 --- a/client/src/features/projectsV2/new/ProjectV2New.tsx +++ b/client/src/features/projectsV2/new/ProjectV2New.tsx @@ -170,7 +170,7 @@ function ProjectV2CreationDetails() { }); }, [setValue, currentName]); - const url = `renkulab.io/v2/projects/${currentNamespace ?? ""}/`; + const url = `renkulab.io/v2/p/${currentNamespace ?? ""}/`; return ( <> diff --git a/client/src/features/rootV2/RootV2.tsx b/client/src/features/rootV2/RootV2.tsx index 33e87397d..c00d9e312 100644 --- a/client/src/features/rootV2/RootV2.tsx +++ b/client/src/features/rootV2/RootV2.tsx @@ -18,19 +18,11 @@ import cx from "classnames"; import { useEffect, useState } from "react"; -import { - Navigate, - Route, - Routes, - useNavigate, -} from "react-router-dom-v5-compat"; +import { Route, Routes, useNavigate } from "react-router-dom-v5-compat"; import ContainerWrap from "../../components/container/ContainerWrap"; import LazyNotFound from "../../not-found/LazyNotFound"; -import { - ABSOLUTE_ROUTES, - RELATIVE_ROUTES, -} from "../../routing/routes.constants"; +import { RELATIVE_ROUTES } from "../../routing/routes.constants"; import useAppDispatch from "../../utils/customHooks/useAppDispatch.hook"; import useAppSelector from "../../utils/customHooks/useAppSelector.hook"; import { setFlag } from "../../utils/feature-flags/featureFlags.slice"; @@ -40,13 +32,11 @@ import LazyHelpV2 from "../dashboardV2/LazyHelpV2"; import LazyGroupContainer from "../groupsV2/LazyGroupContainer"; import LazyGroupV2Overview from "../groupsV2/LazyGroupV2Overview"; import LazyGroupV2Settings from "../groupsV2/LazyGroupV2Settings"; -import { GROUP_CREATION_HASH } from "../groupsV2/new/createGroup.constants"; import GroupNew from "../groupsV2/new/GroupNew"; import LazyProjectPageV2Show from "../ProjectPageV2/LazyProjectPageV2Show"; import LazyProjectPageOverview from "../ProjectPageV2/ProjectPageContent/LazyProjectPageOverview"; import LazyProjectPageSettings from "../ProjectPageV2/ProjectPageContent/LazyProjectPageSettings"; import LazyProjectV2ShowByProjectId from "../projectsV2/LazyProjectV2ShowByProjectId"; -import { PROJECT_CREATION_HASH } from "../projectsV2/new/createProjectV2.constants"; import ProjectV2New from "../projectsV2/new/ProjectV2New"; import LazySearchV2 from "../searchV2/LazySearchV2"; import LazySecretsV2 from "../secretsV2/LazySecretsV2"; @@ -191,18 +181,6 @@ function HelpV2Routes() { function ProjectsV2Routes() { return ( - - } - /> }> } /> diff --git a/client/src/landing/NavBar.jsx b/client/src/landing/NavBar.jsx index 5f357ef0e..ecec3d70e 100644 --- a/client/src/landing/NavBar.jsx +++ b/client/src/landing/NavBar.jsx @@ -201,7 +201,7 @@ function FooterNavbarInner({ location }) { return ( - + {footer} ); diff --git a/client/src/routing/routes.constants.ts b/client/src/routing/routes.constants.ts index 2071ec22a..7c61cc5d8 100644 --- a/client/src/routing/routes.constants.ts +++ b/client/src/routing/routes.constants.ts @@ -31,17 +31,16 @@ export const ABSOLUTE_ROUTES = { }, }, projects: { - new: "/v2/projects/new", show: { - root: "/v2/projects/:namespace/:slug", - settings: "/v2/projects/:namespace/:slug/settings", + root: "/v2/p/:namespace/:slug", + settings: "/v2/p/:namespace/:slug/settings", sessions: { - root: "/v2/projects/:namespace/:slug/sessions", - show: "/v2/projects/:namespace/:slug/sessions/show/:session", - start: "/v2/projects/:namespace/:slug/sessions/:launcherId/start", + root: "/v2/p/:namespace/:slug/sessions", + show: "/v2/p/:namespace/:slug/sessions/show/:session", + start: "/v2/p/:namespace/:slug/sessions/:launcherId/start", }, }, - showById: "/v2/projects/:id", + showById: "/v2/p/:id", }, help: { root: "/v2/help", @@ -102,7 +101,7 @@ export const RELATIVE_ROUTES = { }, }, projects: { - root: "projects/*", + root: "p/*", new: "new", show: { root: ":namespace/:slug/*", diff --git a/tests/cypress/e2e/dashboardV2.spec.ts b/tests/cypress/e2e/dashboardV2.spec.ts index 08cc00b85..078330007 100644 --- a/tests/cypress/e2e/dashboardV2.spec.ts +++ b/tests/cypress/e2e/dashboardV2.spec.ts @@ -54,7 +54,7 @@ describe("View v2 landing page", () => { .click(); cy.location("pathname").should( "contain", - "/v2/projects/user1-uuid/test-2-v2-project/sessions/show/renku-2-86688c93091df68dffdc594bfd022ce3" + "/v2/p/user1-uuid/test-2-v2-project/sessions/show/renku-2-86688c93091df68dffdc594bfd022ce3" ); }); @@ -64,7 +64,7 @@ describe("View v2 landing page", () => { cy.getDataCy("dashboard-project-list").children().first().click(); cy.location("pathname").should( "contain", - "/v2/projects/user1-uuid/test-0-v2-project" + "/v2/p/user1-uuid/test-0-v2-project" ); }); diff --git a/tests/cypress/e2e/projectV2.spec.ts b/tests/cypress/e2e/projectV2.spec.ts index e23c4db68..ef6c44677 100644 --- a/tests/cypress/e2e/projectV2.spec.ts +++ b/tests/cypress/e2e/projectV2.spec.ts @@ -32,7 +32,7 @@ describe("Add new v2 project", () => { }) .listNamespaceV2() .readProjectV2(); - cy.visit("/v2/projects/new"); + cy.visit("/v2#create-project"); }); it("create a new project", () => { @@ -48,7 +48,7 @@ describe("Add new v2 project", () => { cy.contains("button", "Create").click(); cy.wait("@createProjectV2"); - cy.location("pathname").should("eq", `/v2/projects/user1-uuid/${slug}`); + cy.location("pathname").should("eq", `/v2/p/user1-uuid/${slug}`); }); it("prevents invalid input", () => { @@ -74,14 +74,14 @@ describe("Add new v2 project", () => { cy.contains("button", "Create").click(); cy.wait("@createProjectV2"); - cy.location("pathname").should("eq", `/v2/projects/user1-uuid/${slug}`); + cy.location("pathname").should("eq", `/v2/p/user1-uuid/${slug}`); }); }); describe("Add new v2 project -- not logged in", () => { beforeEach(() => { fixtures.config().versions().userNone(); - cy.visit("/v2/projects/new"); + cy.visit("/v2#create-project"); }); it("create a new project", () => { @@ -98,13 +98,13 @@ describe("Navigate to project", () => { }); it("shows projects by namespace/slug", () => { - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); }); it("shows projects by project id", () => { fixtures.readProjectV2ById(); - cy.visit("/v2/projects/THEPROJECTULID26CHARACTERS"); + cy.visit("/v2/p/THEPROJECTULID26CHARACTERS"); cy.wait("@readProjectV2ById"); cy.contains("test 2 v2-project").should("be.visible"); cy.location("pathname").should("contain", "/user1-uuid/test-2-v2-project"); @@ -112,7 +112,7 @@ describe("Navigate to project", () => { it("shows project members", () => { fixtures.listProjectV2Members().readProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.contains("user 1").should("be.visible"); cy.contains("user 3").should("be.visible"); @@ -120,7 +120,7 @@ describe("Navigate to project", () => { it("show project information", () => { fixtures.readProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); // check project data cy.getDataCy("project-name").should("contain.text", "test 2 v2-project"); @@ -138,7 +138,7 @@ describe("Navigate to project", () => { fixture: "projectV2/list-projectV2-members-many.json", }) .readProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.contains("User One").should("be.visible"); cy.contains("User Two").should("be.visible"); @@ -265,7 +265,7 @@ describe("Edit v2 project", () => { it("remove project members", () => { const projectMemberToRemove = "user3-uuid"; fixtures.listProjectV2Members().readProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project/settings#members"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project/settings#members"); cy.contains("Project Members").should("be.visible"); cy.wait("@readProjectV2"); cy.contains("@user3").should("be.visible"); @@ -286,7 +286,7 @@ describe("Edit v2 project", () => { .listProjectV2Members() .searchV2ListProjects({ numberOfProjects: 0, numberOfUsers: 5 }) .readProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project/settings#members"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project/settings#members"); cy.contains("Project Members").should("be.visible"); cy.wait("@readProjectV2"); cy.contains("user 1").should("be.visible"); @@ -312,7 +312,7 @@ describe("Edit v2 project", () => { .listProjectV2Members() .searchV2ListProjects({ numberOfProjects: 0, numberOfUsers: 5 }) .readProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project/settings#members"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project/settings#members"); cy.contains("Project Members").should("be.visible"); cy.wait("@readProjectV2"); cy.contains("user1").should("be.visible"); @@ -329,7 +329,7 @@ describe("Edit v2 project", () => { .listProjectV2Members() .readProjectV2() .patchProjectV2Member({ memberId: projectMemberToEdit }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project/settings#members"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project/settings#members"); cy.contains("Project Members").should("be.visible"); cy.wait("@readProjectV2"); cy.contains("@user3").should("be.visible"); @@ -354,7 +354,7 @@ describe("Edit v2 project", () => { .listProjectV2Members() .readProjectV2() .patchProjectV2Member({ memberId: projectMemberToEdit }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project/settings#members"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project/settings#members"); cy.contains("Project Members").should("be.visible"); cy.wait("@readProjectV2"); cy.contains("user 1").should("be.visible"); @@ -369,7 +369,7 @@ describe("Edit v2 project", () => { }) .readProjectV2() .patchProjectV2Member({ memberId: projectMemberToEdit }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project/settings#members"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project/settings#members"); cy.contains("Project Members").should("be.visible"); cy.wait("@readProjectV2"); cy.getDataCy("project-member-edit-0").should("be.enabled"); @@ -392,7 +392,7 @@ describe("Edit v2 project", () => { it("deletes project", () => { fixtures.readProjectV2().deleteProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project/settings"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project/settings"); cy.wait("@readProjectV2"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("button") @@ -439,7 +439,7 @@ describe("Editor cannot maintain members", () => { .listProjectV2Members() .listProjectDataConnectors() .getDataConnector(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); }); @@ -490,7 +490,7 @@ describe("Viewer cannot edit project", () => { fixture: "projectV2/projectV2-permissions-viewer.json", }) .listProjectV2Members(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); }); @@ -528,7 +528,7 @@ describe("Project templates and copies", () => { it("copy a regular project with edit access", () => { fixtures.getProjectV2Permissions().listNamespaceV2().copyProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.getDataCy("project-info-card") @@ -552,12 +552,12 @@ describe("Project templates and copies", () => { cy.wait("@copyProjectV2"); cy.contains("Go to new project").should("be.visible").click(); cy.wait("@readProjectCopy"); - cy.location("pathname").should("eq", "/v2/projects/e2e/copy-project-name"); + cy.location("pathname").should("eq", "/v2/p/e2e/copy-project-name"); }); it("copy a regular project without edit access", () => { fixtures.listNamespaceV2().copyProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.getDataCy("project-info-card") @@ -578,7 +578,7 @@ describe("Project templates and copies", () => { cy.wait("@copyProjectV2"); cy.contains("Go to new project").should("be.visible").click(); cy.wait("@readProjectCopy"); - cy.location("pathname").should("eq", "/v2/projects/e2e/copy-project-name"); + cy.location("pathname").should("eq", "/v2/p/e2e/copy-project-name"); }); it("copy a template project", () => { @@ -587,7 +587,7 @@ describe("Project templates and copies", () => { .listNamespaceV2() .copyProjectV2() .listProjectV2Copies({ count: 0, writeable: true }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.getDataCy("copy-project-button").click(); cy.contains("Make a copy of user1-uuid/test-2-v2-project").should( @@ -604,7 +604,7 @@ describe("Project templates and copies", () => { cy.wait("@copyProjectV2"); cy.contains("Go to new project").should("be.visible").click(); cy.wait("@readProjectCopy"); - cy.location("pathname").should("eq", "/v2/projects/e2e/copy-project-name"); + cy.location("pathname").should("eq", "/v2/p/e2e/copy-project-name"); }); it("navigate to a template project copy", () => { @@ -616,7 +616,7 @@ describe("Project templates and copies", () => { .listNamespaceV2() .copyProjectV2() .listProjectV2Copies({ count: 1, writeable: true }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-template"); + cy.visit("/v2/p/user1-uuid/test-2-v2-template"); cy.wait("@readProjectV2"); cy.wait("@listProjectV2Copies"); cy.getDataCy("copy-project-button").should("not.exist"); @@ -629,10 +629,7 @@ describe("Project templates and copies", () => { }); cy.contains("Go to my copy").should("be.visible").click(); cy.wait("@readProjectCopy"); - cy.location("pathname").should( - "eq", - "/v2/projects/user1-uuid/test-2-v2-project" - ); + cy.location("pathname").should("eq", "/v2/p/user1-uuid/test-2-v2-project"); }); it("list template project copies", () => { @@ -644,7 +641,7 @@ describe("Project templates and copies", () => { .listNamespaceV2() .listProjectV2Copies({ writeable: true }) .copyProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-template"); + cy.visit("/v2/p/user1-uuid/test-2-v2-template"); cy.wait("@readProjectV2"); cy.wait("@listProjectV2Copies"); cy.getDataCy("copy-project-button").should("not.exist"); @@ -659,7 +656,7 @@ describe("Project templates and copies", () => { .listNamespaceV2() .listProjectV2Copies({ count: 0, writeable: true }) .copyProjectV2({ dataConnectorError: true }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.getDataCy("copy-project-button").click(); cy.contains("Make a copy of user1-uuid/test-2-v2-project").should( @@ -691,7 +688,7 @@ describe("Project templates and copies", () => { .listNamespaceV2() .listProjectV2Copies({ count: 0, writeable: true }) .copyProjectV2({ dataConnectorError: true, name: "copyProjectV2Fail" }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.getDataCy("copy-project-button").click(); cy.contains("Make a copy of user1-uuid/test-2-v2-project").should( @@ -712,7 +709,7 @@ describe("Project templates and copies", () => { cy.wait("@copyProjectV2"); cy.contains("Go to new project").should("be.visible").click(); cy.wait("@readProjectCopy"); - cy.location("pathname").should("eq", "/v2/projects/e2e/copy-of-test2"); + cy.location("pathname").should("eq", "/v2/p/e2e/copy-of-test2"); }); it("show a template project as editor", () => { @@ -721,7 +718,7 @@ describe("Project templates and copies", () => { .getProjectV2Permissions() .listNamespaceV2() .listProjectV2Copies({ count: 15 }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@getProjectV2Permissions"); cy.wait("@listProjectV2Copies"); @@ -747,7 +744,7 @@ describe("Project templates and copies", () => { }, }) .readUserV2Namespace(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@readProjectV2ById"); cy.contains("Copied from:").should("be.visible"); @@ -764,7 +761,7 @@ describe("Project templates and copies", () => { .listNamespaceV2() .copyProjectV2() .updateProjectV2(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -790,7 +787,7 @@ describe("Anonymous project copy experience", () => { it("copy as an anonymous user", () => { fixtures.readProjectV2({ overrides: { is_template: true } }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.contains("To make a copy, you must first log in.").should("be.visible"); }); diff --git a/tests/cypress/e2e/projectV2DataConnectorCredentials.spec.ts b/tests/cypress/e2e/projectV2DataConnectorCredentials.spec.ts index e15884682..3b4040d3c 100644 --- a/tests/cypress/e2e/projectV2DataConnectorCredentials.spec.ts +++ b/tests/cypress/e2e/projectV2DataConnectorCredentials.spec.ts @@ -57,7 +57,7 @@ describe("Set up data connectors with credentials", () => { // No call to postCloudStorageSecrets is expected shouldNotBeCalled: true, }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); @@ -127,7 +127,7 @@ describe("Set up data connectors with credentials", () => { .dataConnectorSecrets({ fixture: "dataConnector/data-connector-secrets.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); diff --git a/tests/cypress/e2e/projectV2Session.spec.ts b/tests/cypress/e2e/projectV2Session.spec.ts index 39fdd9a24..00c9ab6b1 100644 --- a/tests/cypress/e2e/projectV2Session.spec.ts +++ b/tests/cypress/e2e/projectV2Session.spec.ts @@ -52,7 +52,7 @@ describe("launch sessions with data connectors", () => { .sessionSecrets({ fixture: "projectV2SessionSecrets/empty_list.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); }); @@ -61,7 +61,7 @@ describe("launch sessions with data connectors", () => { fixture: "dataConnector/data-connector-public.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -109,10 +109,10 @@ describe("launch sessions with data connectors", () => { cy.getDataCy("start-session-button").click(); }); cy.wait("@getResourceClass"); - cy.url().should("match", /\/projects\/.*\/sessions\/.*\/start$/); + cy.url().should("match", /\/p\/.*\/sessions\/.*\/start$/); cy.wait("@getSessionImage"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it("launch session with data connector requiring credentials", () => { @@ -124,7 +124,7 @@ describe("launch sessions with data connectors", () => { fixture: "dataConnector/data-connector-secrets-empty.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -177,7 +177,7 @@ describe("launch sessions with data connectors", () => { cy.getDataCy("start-session-button").click(); }); cy.wait("@getResourceClass"); - cy.url().should("match", /\/projects\/.*\/sessions\/.*\/start$/); + cy.url().should("match", /\/p\/.*\/sessions\/.*\/start$/); cy.getDataCy("session-data-connector-credentials-modal") .should("be.visible") .contains("Please provide") @@ -203,7 +203,7 @@ describe("launch sessions with data connectors", () => { .click(); cy.wait("@testCloudStorage"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it("launch session with data connector, saving credentials", () => { @@ -229,7 +229,7 @@ describe("launch sessions with data connectors", () => { ], }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -296,7 +296,7 @@ describe("launch sessions with data connectors", () => { cy.wait("@getDataConnectorSecretsAfterSaving"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it("launch session with data connector, saving credentials on skip", () => { @@ -322,7 +322,7 @@ describe("launch sessions with data connectors", () => { ], }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -374,7 +374,7 @@ describe("launch sessions with data connectors", () => { cy.wait("@patchDataConnectorSecrets"); cy.wait("@getDataConnectorSecretsAfterSaving"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it("launch session with saved credentials", () => { @@ -385,7 +385,7 @@ describe("launch sessions with data connectors", () => { .getDataConnector() .dataConnectorSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -413,7 +413,7 @@ describe("launch sessions with data connectors", () => { cy.wait("@getDataConnectorSecrets"); }); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it("launch session with incomplete saved credentials", () => { @@ -425,7 +425,7 @@ describe("launch sessions with data connectors", () => { fixture: "dataConnector/data-connector-secrets-partial.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -468,7 +468,7 @@ describe("launch sessions with data connectors", () => { .click(); cy.wait("@testCloudStorage"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it.skip("launch session multiple data connectors requiring multiple credentials, saving all", () => { @@ -514,7 +514,7 @@ describe("launch sessions with data connectors", () => { ], }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -574,7 +574,7 @@ describe("launch sessions with data connectors", () => { cy.wait("@testCloudStorage"); cy.wait("@getResourceClass"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it.skip("launch session multiple data connectors requiring multiple credentials, skipping some", () => { @@ -598,7 +598,7 @@ describe("launch sessions with data connectors", () => { fixture: "dataConnector/data-connector-secrets-empty.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -669,7 +669,7 @@ describe("launch sessions with data connectors", () => { cy.wait("@testCloudStorage"); cy.wait("@getResourceClass"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it.skip("launch session with multiple data connectors requiring credentials, skipping all", () => { @@ -693,7 +693,7 @@ describe("launch sessions with data connectors", () => { fixture: "dataConnector/data-connector-secrets-empty.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -758,7 +758,7 @@ describe("launch sessions with data connectors", () => { cy.wait("@testCloudStorage"); cy.wait("@getResourceClass"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); }); @@ -793,7 +793,7 @@ describe("launch sessions with secrets", () => { .listProjectDataConnectors({ fixture: "dataConnector/empty-list.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); }); @@ -806,7 +806,7 @@ describe("launch sessions with secrets", () => { fixture: "projectV2SessionSecrets/empty_list.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -835,15 +835,15 @@ describe("launch sessions with secrets", () => { cy.getDataCy("start-session-button").click(); }); cy.wait("@getResourceClass"); - cy.url().should("match", /\/projects\/.*\/sessions\/.*\/start$/); + cy.url().should("match", /\/p\/.*\/sessions\/.*\/start$/); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it("launch session requiring secrets, skipping", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -872,7 +872,7 @@ describe("launch sessions with secrets", () => { cy.getDataCy("start-session-button").click(); }); cy.wait("@getResourceClass"); - cy.url().should("match", /\/projects\/.*\/sessions\/.*\/start$/); + cy.url().should("match", /\/p\/.*\/sessions\/.*\/start$/); cy.getDataCy("session-secrets-modal").should("be.visible"); cy.getDataCy("session-secrets-modal") @@ -885,13 +885,13 @@ describe("launch sessions with secrets", () => { cy.getDataCy("session-secrets-modal").contains("button", "Skip").click(); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); it("launch session requiring secrets, saving new secret", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@sessionServersEmptyV2"); cy.wait("@sessionLaunchers"); @@ -920,7 +920,7 @@ describe("launch sessions with secrets", () => { cy.getDataCy("start-session-button").click(); }); cy.wait("@getResourceClass"); - cy.url().should("match", /\/projects\/.*\/sessions\/.*\/start$/); + cy.url().should("match", /\/p\/.*\/sessions\/.*\/start$/); cy.getDataCy("session-secrets-modal").should("be.visible"); cy.getDataCy("session-secrets-modal") @@ -958,6 +958,6 @@ describe("launch sessions with secrets", () => { cy.wait("@patchSessionSecrets").wait("@updatedSessionSecrets"); cy.wait("@createSession"); - cy.url().should("match", /\/projects\/.*\/sessions\/show\/.*/); + cy.url().should("match", /\/p\/.*\/sessions\/show\/.*/); }); }); diff --git a/tests/cypress/e2e/projectV2SessionSecrets.spec.ts b/tests/cypress/e2e/projectV2SessionSecrets.spec.ts index 97543375e..6f73fe24b 100644 --- a/tests/cypress/e2e/projectV2SessionSecrets.spec.ts +++ b/tests/cypress/e2e/projectV2SessionSecrets.spec.ts @@ -29,7 +29,7 @@ describe("Project Session secret slots", () => { }); it("Shows the session secrets section", () => { - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -41,7 +41,7 @@ describe("Project Session secret slots", () => { it("Shows configured session secrets", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -68,7 +68,7 @@ describe("Project Session secret slots", () => { it("Can add a new session secret slot", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -123,7 +123,7 @@ describe("Project Session secret slots", () => { it("Can edit a session secret slot", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -172,7 +172,7 @@ describe("Project Session secret slots", () => { it("Can delete a session secret slot", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -222,7 +222,7 @@ describe("Project Session secret slots", () => { it("Can provide a new secret value", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -279,7 +279,7 @@ describe("Project Session secret slots", () => { it("Can provide an existing secret value", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); @@ -342,7 +342,7 @@ describe("Project Session secret slots", () => { it("Can clear the secret from a slot", () => { fixtures.sessionSecretSlots().sessionSecrets(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.contains("test 2 v2-project").should("be.visible"); cy.get("a[title='Settings']").should("be.visible").click(); diff --git a/tests/cypress/e2e/projectV2setup.spec.ts b/tests/cypress/e2e/projectV2setup.spec.ts index ec8bd6abf..0e03a1fcd 100644 --- a/tests/cypress/e2e/projectV2setup.spec.ts +++ b/tests/cypress/e2e/projectV2setup.spec.ts @@ -45,7 +45,7 @@ describe("Set up project components", () => { .updateProjectV2({ fixture: "projectV2/update-projectV2-one-repository.json", }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); // add code repositories fixtures.readProjectV2({ @@ -90,7 +90,7 @@ describe("Set up project components", () => { .resourcePoolsTest() .getResourceClass() .environments(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@getSessionsV2"); cy.wait("@sessionLaunchers"); @@ -138,7 +138,7 @@ describe("Set up project components", () => { cy.getDataCy("session-launcher-item").within(() => { cy.getDataCy("start-session-button").click(); }); - cy.url().should("match", /\/projects\/.*\/sessions\/.*\/start$/); + cy.url().should("match", /\/p\/.*\/sessions\/.*\/start$/); cy.go("back"); @@ -193,7 +193,7 @@ describe("Set up data connectors", () => { .testCloudStorage({ success: false }) .postDataConnector({ namespace: "user1-uuid", visibility: "public" }) .postDataConnectorProjectLink({ dataConnectorId: "ULID-5" }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); @@ -255,7 +255,7 @@ describe("Set up data connectors", () => { .listProjectDataConnectors() .getDataConnectorByNamespaceAndSlug() .postDataConnectorProjectLink({ dataConnectorId: "ULID-1" }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); @@ -273,7 +273,7 @@ describe("Set up data connectors", () => { .readProjectV2({ fixture: "projectV2/read-projectV2-empty.json" }) .listProjectDataConnectors() .getDataConnectorByNamespaceAndSlugNotFound(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); @@ -295,7 +295,7 @@ describe("Set up data connectors", () => { .getDataConnector() .deleteDataConnectorProjectLink(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); @@ -326,7 +326,7 @@ describe("Set up data connectors", () => { fixture: "projectV2/projectV2-permissions-viewer.json", }) .deleteDataConnectorProjectLinkNotAllowed(); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); @@ -344,7 +344,7 @@ describe("Set up data connectors", () => { .testCloudStorage({ success: false }) .postDataConnector({ namespace: "user1-uuid", visibility: "public" }) .postDataConnectorProjectLink({ dataConnectorId: "ULID-5" }); - cy.visit("/v2/projects/user1-uuid/test-2-v2-project"); + cy.visit("/v2/p/user1-uuid/test-2-v2-project"); cy.wait("@readProjectV2"); cy.wait("@listProjectDataConnectors"); @@ -416,6 +416,7 @@ describe("Set up data connectors", () => { .getDataConnectorPermissions() .patchDataConnector({ namespace: "user1-uuid" }) .patchDataConnectorSecrets({ + content: [], shouldNotBeCalled: true, });