Skip to content

Commit 33037f1

Browse files
STetsingci-bot
authored andcommitted
fix unfolding .deps folder e2e
1 parent 85c42e7 commit 33037f1

File tree

5 files changed

+136
-1
lines changed

5 files changed

+136
-1
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import { NightwatchBrowser } from 'nightwatch'
2+
import EventEmitter from 'events'
3+
4+
class ExpandAllFolders extends EventEmitter {
5+
command (this: NightwatchBrowser, targetDirectory?: string) {
6+
this.api.perform((done) => {
7+
expandAllFolders(this.api, targetDirectory, () => {
8+
done()
9+
this.emit('complete')
10+
})
11+
})
12+
return this
13+
}
14+
}
15+
16+
function expandAllFolders (browser: NightwatchBrowser, targetDirectory?: string, done?: VoidFunction) {
17+
// Ensure file panel is open
18+
browser.perform((bdone: VoidFunction) => {
19+
browser.isVisible('[data-id="remixIdeSidePanel"]', (result) => {
20+
if (result.value) {
21+
browser.element('css selector', '[data-id="verticalIconsKindfilePanel"] img[data-id="selected"]', (result) => {
22+
if (result.status === 0) {
23+
bdone()
24+
} else browser.clickLaunchIcon('filePanel').perform(() => {
25+
bdone()
26+
})
27+
})
28+
} else {
29+
browser.clickLaunchIcon('filePanel').perform(() => {
30+
bdone()
31+
})
32+
}
33+
})
34+
})
35+
.perform(() => {
36+
let iteration = 0
37+
const maxIterations = 20 // Prevent infinite loops
38+
39+
const clickNext = () => {
40+
if (iteration >= maxIterations) {
41+
if (done) done()
42+
return
43+
}
44+
45+
iteration++
46+
47+
// Find folders that are not expanded, / in case no folder is passed
48+
const folderSelector = targetDirectory ?
49+
`li[data-id*="treeViewLitreeViewItem${targetDirectory}"] li[data-id*="treeViewLitreeViewItem"] .fa-folder:not(.fa-folder-open)` :
50+
'li[data-id*="treeViewLitreeViewItem"] .fa-folder:not(.fa-folder-open)'
51+
52+
browser.element('css selector', folderSelector, (result) => {
53+
if (result.status === 0 && result.value) {
54+
// Found a closed folder, click its parent li element
55+
browser.element('css selector', folderSelector, (elementResult) => {
56+
if (elementResult.status === 0) {
57+
browser.elementIdElement((elementResult.value as any)['element-6066-11e4-a52e-4f735466cecf'], 'xpath', './..', (parentResult) => {
58+
if (parentResult.status === 0) {
59+
browser.elementIdClick((parentResult.value as any)['element-6066-11e4-a52e-4f735466cecf']) // click on folder name
60+
.pause(100)
61+
.perform(() => clickNext()) // recursive nested folders
62+
} else {
63+
if (done) done()
64+
}
65+
})
66+
} else {
67+
if (done) done()
68+
}
69+
})
70+
} else {
71+
if (done) done()
72+
}
73+
})
74+
}
75+
76+
clickNext()
77+
})
78+
}
79+
80+
module.exports = ExpandAllFolders
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
'use strict'
2+
import { NightwatchBrowser } from 'nightwatch'
3+
import init from '../helpers/init'
4+
5+
module.exports = {
6+
'@disabled': true,
7+
before: function (browser: NightwatchBrowser, done: VoidFunction) {
8+
init(browser, done)
9+
},
10+
11+
'Should expand all folders in the file explorer': function (browser: NightwatchBrowser) {
12+
browser
13+
.clickLaunchIcon('filePanel')
14+
.waitForElementVisible('*[data-id="treeViewLitreeViewItemcontracts"]')
15+
.waitForElementVisible('*[data-id="treeViewLitreeViewItemscripts"]')
16+
.expandAllFolders()
17+
.pause(2000)
18+
.isVisible({
19+
selector: '*[data-id="treeViewLitreeViewItemcontracts"] .fa-folder-open',
20+
timeout: 5000,
21+
suppressNotFoundErrors: true
22+
})
23+
.isVisible({
24+
selector: '*[data-id="treeViewLitreeViewItemscripts"] .fa-folder-open',
25+
timeout: 5000,
26+
suppressNotFoundErrors: true
27+
})
28+
},
29+
30+
'Should expand all folders within a specific directory': function (browser: NightwatchBrowser) {
31+
browser
32+
.clickLaunchIcon('filePanel')
33+
.addFile('package.json', sources[0]['package.json'])
34+
.addFile('Untitled10.sol', sources[0]['Untitled10.sol'])
35+
.waitForElementVisible('*[data-id="treeViewLitreeViewItem.deps"]')
36+
.expandAllFolders()
37+
.pause(5000)
38+
}
39+
}
40+
const sources = [
41+
{
42+
'Untitled10.sol': { content: 'pragma solidity ^0.8.0; import "@module_remapping/token/ERC20/ERC20.sol"; contract test15 {}' },
43+
'package.json': { content: `{
44+
"dependencies": {
45+
"@module_remapping": "npm:@openzeppelin/contracts@^4.9.0"
46+
}
47+
}` }
48+
}
49+
]

apps/remix-ide-e2e/src/tests/solidityImport.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ module.exports = {
100100
.click('li[data-id="treeViewLitreeViewItemREADME.txt"')
101101
.addFile('Untitled9.sol', sources[8]['Untitled9.sol'])
102102
// avoid invalid source issues
103+
.expandAllFolders()
103104
.isVisible({
104105
selector: '*[data-id="treeViewLitreeViewItem.deps/npm/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"]',
105106
timeout: 120000,
@@ -108,6 +109,7 @@ module.exports = {
108109
.clickLaunchIcon('solidity')
109110
.click('[data-id="compilerContainerCompileBtn"]')
110111
.clickLaunchIcon('filePanel')
112+
.expandAllFolders()
111113
.isVisible({
112114
selector: '*[data-id="treeViewLitreeViewItem.deps/npm/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"]',
113115
timeout: 120000,
@@ -126,7 +128,8 @@ module.exports = {
126128
.clickLaunchIcon('filePanel')
127129
.click('li[data-id="treeViewLitreeViewItemREADME.txt"')
128130
.addFile('package.json', sources[9]['package.json'])
129-
.addFile('Untitled10.sol', sources[9]['Untitled10.sol'])
131+
.addFile('Untitled10.sol', sources[9]['Untitled10.sol'])
132+
.expandAllFolders() // unfold also .deps folder and nested folders
130133
// avoid invalid source issues
131134
.isVisible({
132135
selector: '*[data-id="treeViewLitreeViewItem.deps/npm/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"]',
@@ -136,6 +139,7 @@ module.exports = {
136139
.clickLaunchIcon('solidity')
137140
.click('[data-id="compilerContainerCompileBtn"]')
138141
.clickLaunchIcon('filePanel')
142+
.expandAllFolders()
139143
.isVisible({
140144
selector: '*[data-id="treeViewLitreeViewItem.deps/npm/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"]',
141145
timeout: 120000,

apps/remix-ide-e2e/src/tests/solidityUnittests.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ module.exports = {
192192
.modalFooterOKClick('TemplatesSelection')
193193
.pause(3000)
194194
.currentWorkspaceIs('workspace_new')
195+
.expandAllFolders()
195196
.waitForElementVisible('li[data-id="treeViewLitreeViewItem.deps/remix-tests/remix_tests.sol"]')
196197
.waitForElementVisible('li[data-id="treeViewLitreeViewItem.deps/remix-tests/remix_accounts.sol"]')
197198
.openFile('.deps/remix-tests/remix_tests.sol')

apps/remix-ide-e2e/src/types/index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ declare module 'nightwatch' {
8484
addFileSnekmate: (name: string, content: NightwatchContractContent) => NightwatchBrowser
8585
selectFiles: (selelectedElements: any[]) => NightwatchBrowser
8686
waitForCompilerLoaded: () => NightwatchBrowser
87+
expandAllFolders: (targetDirectory?: string) => NightwatchBrowser
8788
}
8889

8990
export interface NightwatchBrowser {

0 commit comments

Comments
 (0)