diff --git a/apps/remix-ide-e2e/src/tests/workspace_git.test.ts b/apps/remix-ide-e2e/src/tests/workspace_git.test.ts index 0a1e1ec63b..138b040a3e 100644 --- a/apps/remix-ide-e2e/src/tests/workspace_git.test.ts +++ b/apps/remix-ide-e2e/src/tests/workspace_git.test.ts @@ -339,6 +339,36 @@ module.exports = { .waitForElementVisible('[data-id="treeViewDivtreeViewItemrecursive/plugins/build"]') }, + // GIT SUBMODULES E2E ENDS + + // GIT WORKSPACE E2E STARTS + + 'Should create a git workspace (uniswapV4Periphery) #group4': function (browser: NightwatchBrowser) { + browser + .click('*[data-id="workspacesMenuDropdown"]') + .click('*[data-id="workspacecreate"]') + .waitForElementVisible('*[data-id="modalDialogCustomPromptTextCreate"]') + .waitForElementVisible('[data-id="fileSystemModalDialogModalFooter-react"] > button') + .click('select[id="wstemplate"]') + .click('select[id="wstemplate"] option[value=uniswapV4Periphery]') + .waitForElementPresent('[data-id="fileSystemModalDialogModalFooter-react"] .modal-ok') + .execute(function () { (document.querySelector('[data-id="fileSystemModalDialogModalFooter-react"] .modal-ok') as HTMLElement).click() }) + .pause(100) + .waitForElementVisible('*[data-id="treeViewLitreeViewItemcontracts"]') + .openFile('contracts') + .openFile('contracts/hooks') + .openFile('contracts/hooks/examples') + .openFile('contracts/hooks/examples/FullRange.sol') + .pause(1000) + .getEditorValue((content) => { + browser.assert.ok(content.indexOf(`contract FullRange is BaseHook`) !== -1, + 'Incorrect content') + }) + }, + + // GIT WORKSPACE E2E ENDS + + tearDown: sauce, } diff --git a/libs/remix-ui/workspace/src/lib/actions/workspace.ts b/libs/remix-ui/workspace/src/lib/actions/workspace.ts index c8dde8df05..e1c2469128 100644 --- a/libs/remix-ui/workspace/src/lib/actions/workspace.ts +++ b/libs/remix-ui/workspace/src/lib/actions/workspace.ts @@ -39,7 +39,6 @@ import { IndexedDBStorage } from '../../../../../../apps/remix-ide/src/app/files import { getUncommittedFiles } from '../utils/gitStatusFilter' import { AppModal, ModalTypes } from '@remix-ui/app' import { contractDeployerScripts, etherscanScripts } from '@remix-project/remix-ws-templates' -import { template } from 'lodash' declare global { interface Window { @@ -193,14 +192,12 @@ export const createWorkspace = async ( export const createWorkspaceTemplate = async (workspaceName: string, template: WorkspaceTemplate = 'remixDefault') => { const metadata = TEMPLATE_METADATA[template] - if (metadata) { - await plugin.call('dGitProvider', 'clone', {url: metadata.url, branch: metadata.branch}, TEMPLATE_NAMES[template]) - return - } if (!workspaceName) throw new Error('workspace name cannot be empty') if (checkSpecialChars(workspaceName) || checkSlash(workspaceName)) throw new Error('special characters are not allowed') if ((await workspaceExists(workspaceName)) && template === 'remixDefault') throw new Error('workspace already exists') - else { + else if (metadata) { + await plugin.call('dGitProvider', 'clone', {url: metadata.url, branch: metadata.branch}, workspaceName) + } else { const workspaceProvider = plugin.fileProviders.workspace await workspaceProvider.createWorkspace(workspaceName) }