Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
baas-ide
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
guxukai
baas-ide
Commits
e5325411
Commit
e5325411
authored
Mar 02, 2020
by
ioedeveloper
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Rolled back package-lock.json changes
parent
6713f691
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
45 additions
and
20 deletions
+45
-20
package.json
package.json
+1
-0
app.js
src/app.js
+1
-1
vertical-icons.js
src/app/components/vertical-icons.js
+2
-1
compilerContainer.js
src/app/tabs/compileTab/compilerContainer.js
+1
-1
settings.js
src/app/tabs/runTab/settings.js
+2
-2
settings-tab.js
src/app/tabs/settings-tab.js
+8
-8
copy-to-clipboard.js
src/app/ui/copy-to-clipboard.js
+1
-1
landing-page.js
src/app/ui/landing-page/landing-page.js
+1
-1
tooltip.js
src/app/ui/tooltip.js
+2
-2
checkElementStyle.js
test-browser/commands/checkElementStyle.js
+3
-1
switchBrowserTab.js
test-browser/commands/switchBrowserTab.js
+20
-0
generalSettings.js
test-browser/tests/generalSettings.js
+0
-0
pluginManager.js
test-browser/tests/pluginManager.js
+3
-2
No files found.
package.json
View file @
e5325411
...
@@ -178,6 +178,7 @@
...
@@ -178,6 +178,7 @@
"nightwatch_local_defaultLayout"
:
"nightwatch ./test-browser/tests/defaultLayout.js --config nightwatch.js --env chrome "
,
"nightwatch_local_defaultLayout"
:
"nightwatch ./test-browser/tests/defaultLayout.js --config nightwatch.js --env chrome "
,
"nightwatch_local_pluginManager"
:
"nightwatch ./test-browser/tests/pluginManager.js --config nightwatch.js --env chrome "
,
"nightwatch_local_pluginManager"
:
"nightwatch ./test-browser/tests/pluginManager.js --config nightwatch.js --env chrome "
,
"nightwatch_local_publishContract"
:
"nightwatch ./test-browser/tests/publishContract.js --config nightwatch.js --env chrome "
,
"nightwatch_local_publishContract"
:
"nightwatch ./test-browser/tests/publishContract.js --config nightwatch.js --env chrome "
,
"nightwatch_local_generalSettings"
:
"nightwatch ./test-browser/tests/generalSettings.js --config nightwatch.js --env chrome "
,
"onchange"
:
"onchange build/app.js -- npm-run-all lint"
,
"onchange"
:
"onchange build/app.js -- npm-run-all lint"
,
"prepublish"
:
"mkdirp build; npm-run-all -ls downloadsolc_root build"
,
"prepublish"
:
"mkdirp build; npm-run-all -ls downloadsolc_root build"
,
"remixd"
:
"remixd -s ./contracts --remix-ide http://127.0.0.1:8080"
,
"remixd"
:
"remixd -s ./contracts --remix-ide http://127.0.0.1:8080"
,
...
...
src/app.js
View file @
e5325411
...
@@ -185,7 +185,7 @@ class App {
...
@@ -185,7 +185,7 @@ class App {
self
.
_components
.
resizeFeature
=
new
PanelsResize
(
self
.
_view
.
sidepanel
)
self
.
_components
.
resizeFeature
=
new
PanelsResize
(
self
.
_view
.
sidepanel
)
self
.
_view
.
el
=
yo
`
self
.
_view
.
el
=
yo
`
<div style="visibility:hidden" class=
${
css
.
remixIDE
}
>
<div style="visibility:hidden" class=
${
css
.
remixIDE
}
data-id="remixIDE"
>
${
self
.
_view
.
iconpanel
}
${
self
.
_view
.
iconpanel
}
${
self
.
_view
.
sidepanel
}
${
self
.
_view
.
sidepanel
}
${
self
.
_components
.
resizeFeature
.
render
()}
${
self
.
_components
.
resizeFeature
.
render
()}
...
...
src/app/components/vertical-icons.js
View file @
e5325411
...
@@ -71,7 +71,8 @@ export class VerticalIcons extends Plugin {
...
@@ -71,7 +71,8 @@ export class VerticalIcons extends Plugin {
class="
${
css
.
icon
}
"
class="
${
css
.
icon
}
"
onclick="
${()
=>
{
this
.
toggle
(
name
)
}}
"
onclick="
${()
=>
{
this
.
toggle
(
name
)
}}
"
plugin="
$
{
name
}
"
plugin="
$
{
name
}
"
title="
${
title
}
">
title="
${
title
}
"
data-id="verticalIconsKind
${
name
}
">
<img class="image" src="
${
icon
}
" alt="
${
name
}
" />
<img class="image" src="
${
icon
}
" alt="
${
name
}
" />
</div>`
</div>`
this
.
iconKind
[
kind
||
'none'
].
appendChild
(
this
.
icons
[
name
])
this
.
iconKind
[
kind
||
'none'
].
appendChild
(
this
.
icons
[
name
])
...
...
src/app/tabs/compileTab/compilerContainer.js
View file @
e5325411
...
@@ -115,7 +115,7 @@ class CompilerContainer {
...
@@ -115,7 +115,7 @@ class CompilerContainer {
const
displayed
=
name
||
'<no file selected>'
const
displayed
=
name
||
'<no file selected>'
const
disabled
=
name
?
''
:
'disabled'
const
disabled
=
name
?
''
:
'disabled'
const
compileBtn
=
yo
`
const
compileBtn
=
yo
`
<button id="compileBtn" class="btn btn-primary btn-block
${
disabled
}
" title="Compile" onclick="
${
this
.
compile
.
bind
(
this
)}
">
<button id="compileBtn"
data-id="compilerContainerCompileBtn"
class="btn btn-primary btn-block
${
disabled
}
" title="Compile" onclick="
${
this
.
compile
.
bind
(
this
)}
">
<span>
${
this
.
_view
.
compileIcon
}
Compile
${
displayed
}
</span>
<span>
${
this
.
_view
.
compileIcon
}
Compile
${
displayed
}
</span>
</button>
</button>
`
`
...
...
src/app/tabs/runTab/settings.js
View file @
e5325411
...
@@ -60,7 +60,7 @@ class SettingsUI {
...
@@ -60,7 +60,7 @@ class SettingsUI {
Environment
Environment
</label>
</label>
<div class="
${
css
.
environment
}
">
<div class="
${
css
.
environment
}
">
<select id="selectExEnvOptions" onchange=
${()
=>
{
this
.
updateNetwork
()
}}
class
=
"form-control ${css.select} custom-select"
>
<select id="selectExEnvOptions"
data-id="settingsSelectEnvOptions"
onchange=
${()
=>
{
this
.
updateNetwork
()
}}
class
=
"form-control ${css.select} custom-select"
>
<
option
id
=
"vm-mode"
<
option
id
=
"vm-mode"
title
=
"Execution environment does not connect to any node, everything is local and in memory only."
title
=
"Execution environment does not connect to any node, everything is local and in memory only."
value
=
"vm"
name
=
"executionContext"
>
JavaScript
VM
value
=
"vm"
name
=
"executionContext"
>
JavaScript
VM
...
@@ -83,7 +83,7 @@ class SettingsUI {
...
@@ -83,7 +83,7 @@ class SettingsUI {
<
div
class
=
"${css.crow}"
>
<
div
class
=
"${css.crow}"
>
<
div
class
=
"${css.settingsLabel}"
>
<
div
class
=
"${css.settingsLabel}"
>
<
/div
>
<
/div
>
<
div
class
=
"${css.environment}"
>
<
div
class
=
"${css.environment}"
data
-
id
=
"settingsNetworkEnv"
>
$
{
this
.
netUI
}
$
{
this
.
netUI
}
</div>
</div>
</div>
</div>
...
...
src/app/tabs/settings-tab.js
View file @
e5325411
...
@@ -53,7 +53,7 @@ module.exports = class SettingsTab extends ViewPlugin {
...
@@ -53,7 +53,7 @@ module.exports = class SettingsTab extends ViewPlugin {
return
yo
`<div class="card-text themes-container">
return
yo
`<div class="card-text themes-container">
${
themes
.
map
((
aTheme
)
=>
{
${
themes
.
map
((
aTheme
)
=>
{
let
el
=
yo
`<div class="
${
css
.
frow
}
form-check
${
css
.
crow
}
">
let
el
=
yo
`<div class="
${
css
.
frow
}
form-check
${
css
.
crow
}
">
<input type="radio" onchange=
${
event
=>
{
onswitchTheme
(
event
,
aTheme
.
name
)
}}
class
=
"align-middle form-check-input"
name
=
"theme"
id
=
"${aTheme.name}"
>
<input type="radio" onchange=
${
event
=>
{
onswitchTheme
(
event
,
aTheme
.
name
)
}}
class
=
"align-middle form-check-input"
name
=
"theme"
id
=
"${aTheme.name}"
data
-
id
=
"settingsTabTheme${aTheme.name}"
>
<
label
class
=
"form-check-label"
for
=
"${aTheme.name}"
>
$
{
aTheme
.
name
}
(
${
aTheme
.
quality
}
)</label>
<
label
class
=
"form-check-label"
for
=
"${aTheme.name}"
>
$
{
aTheme
.
name
}
(
${
aTheme
.
quality
}
)</label>
</div>`
</div>`
if
(
this
.
_deps
.
themeModule
.
active
===
aTheme
.
name
)
el
.
querySelector
(
'input'
).
setAttribute
(
'checked'
,
'checked'
)
if
(
this
.
_deps
.
themeModule
.
active
===
aTheme
.
name
)
el
.
querySelector
(
'input'
).
setAttribute
(
'checked'
,
'checked'
)
...
@@ -68,18 +68,18 @@ module.exports = class SettingsTab extends ViewPlugin {
...
@@ -68,18 +68,18 @@ module.exports = class SettingsTab extends ViewPlugin {
if
(
self
.
_view
.
el
)
return
self
.
_view
.
el
if
(
self
.
_view
.
el
)
return
self
.
_view
.
el
// Gist settings
// Gist settings
var
gistAccessToken
=
yo
`<input id="gistaccesstoken" type="password" class="form-control mb-2
${
css
.
inline
}
" placeholder="Token">`
var
gistAccessToken
=
yo
`<input id="gistaccesstoken"
data-id="settingsTabGistAccessToken"
type="password" class="form-control mb-2
${
css
.
inline
}
" placeholder="Token">`
var
token
=
this
.
config
.
get
(
'settings/gist-access-token'
)
var
token
=
this
.
config
.
get
(
'settings/gist-access-token'
)
if
(
token
)
gistAccessToken
.
value
=
token
if
(
token
)
gistAccessToken
.
value
=
token
var
gistAddToken
=
yo
`<input class="
${
css
.
savegisttoken
}
btn btn-sm btn-primary" id="savegisttoken" onclick=
${()
=>
{
this
.
config
.
set
(
'settings/gist-access-token'
,
gistAccessToken
.
value
);
tooltip
(
'Access token saved'
)
}}
value
=
"Save"
type
=
"button"
>
`
var
gistAddToken
=
yo
`<input class="
${
css
.
savegisttoken
}
btn btn-sm btn-primary" id="savegisttoken"
data-id="settingsTabSaveGistToken"
onclick=
${()
=>
{
this
.
config
.
set
(
'settings/gist-access-token'
,
gistAccessToken
.
value
);
tooltip
(
'Access token saved'
)
}}
value
=
"Save"
type
=
"button"
>
`
var gistRemoveToken = yo`
<
input
class
=
"btn btn-sm btn-primary"
id
=
"removegisttoken"
onclick
=
$
{()
=>
{
gistAccessToken
.
value
=
''
;
this
.
config
.
set
(
'settings/gist-access-token'
,
''
);
tooltip
(
'Access token removed'
)
}}
value
=
"Remove"
type
=
"button"
>
`
var gistRemoveToken = yo`
<
input
class
=
"btn btn-sm btn-primary"
id
=
"removegisttoken"
data
-
id
=
"settingsTabRemoveGistToken"
onclick
=
$
{()
=>
{
gistAccessToken
.
value
=
''
;
this
.
config
.
set
(
'settings/gist-access-token'
,
''
);
tooltip
(
'Access token removed'
)
}}
value
=
"Remove"
type
=
"button"
>
`
this._view.gistToken = yo`
<
div
class
=
"${css.checkboxText}"
>
$
{
gistAccessToken
}${
copyToClipboard
(()
=>
this
.
config
.
get
(
'settings/gist-access-token'
))}${
gistAddToken
}${
gistRemoveToken
}
</div>`
this._view.gistToken = yo`
<
div
class
=
"${css.checkboxText}"
>
$
{
gistAccessToken
}${
copyToClipboard
(()
=>
this
.
config
.
get
(
'settings/gist-access-token'
))}${
gistAddToken
}${
gistRemoveToken
}
</div>`
this
.
_view
.
optionVM
=
yo
`<input onchange=
${
onchangeOption
}
class="align-middle form-check-input" id="alwaysUseVM" type="checkbox">`
this
.
_view
.
optionVM
=
yo
`<input onchange=
${
onchangeOption
}
class="align-middle form-check-input" id="alwaysUseVM"
data-id="settingsTabAlwaysUseVM"
type="checkbox">`
if
(
this
.
config
.
get
(
'settings/always-use-vm'
)
===
undefined
)
this
.
config
.
set
(
'settings/always-use-vm'
,
true
)
if
(
this
.
config
.
get
(
'settings/always-use-vm'
)
===
undefined
)
this
.
config
.
set
(
'settings/always-use-vm'
,
true
)
if
(
this
.
config
.
get
(
'settings/always-use-vm'
))
this
.
_view
.
optionVM
.
setAttribute
(
'checked'
,
''
)
if
(
this
.
config
.
get
(
'settings/always-use-vm'
))
this
.
_view
.
optionVM
.
setAttribute
(
'checked'
,
''
)
this
.
_view
.
personal
=
yo
`<input onchange=
${
onchangePersonal
}
id="personal" type="checkbox" class="align-middle form-check-input">`
this
.
_view
.
personal
=
yo
`<input onchange=
${
onchangePersonal
}
id="personal" type="checkbox" class="align-middle form-check-input">`
if
(
this
.
config
.
get
(
'settings/personal-mode'
))
this
.
_view
.
personal
.
setAttribute
(
'checked'
,
''
)
if
(
this
.
config
.
get
(
'settings/personal-mode'
))
this
.
_view
.
personal
.
setAttribute
(
'checked'
,
''
)
this
.
_view
.
generateContractMetadata
=
yo
`<input onchange=
${
onchangeGenerateContractMetadata
}
id="generatecontractmetadata" type="checkbox" class="form-check-input">`
this
.
_view
.
generateContractMetadata
=
yo
`<input onchange=
${
onchangeGenerateContractMetadata
}
id="generatecontractmetadata"
data-id="settingsTabGenerateContractMetadata"
type="checkbox" class="form-check-input">`
if
(
this
.
config
.
get
(
'settings/generate-contract-metadata'
))
this
.
_view
.
generateContractMetadata
.
setAttribute
(
'checked'
,
''
)
if
(
this
.
config
.
get
(
'settings/generate-contract-metadata'
))
this
.
_view
.
generateContractMetadata
.
setAttribute
(
'checked'
,
''
)
...
@@ -92,7 +92,7 @@ module.exports = class SettingsTab extends ViewPlugin {
...
@@ -92,7 +92,7 @@ module.exports = class SettingsTab extends ViewPlugin {
<div class="
${
css
.
info
}
card">
<div class="
${
css
.
info
}
card">
<div class="card-body">
<div class="card-body">
<h6 class="
${
css
.
title
}
card-title">Have a question?</h6>
<h6 class="
${
css
.
title
}
card-title">Have a question?</h6>
<button class="btn btn-primary sm-1" onclick="
${()
=>
{
window
.
open
(
'https://gitter.im/ethereum/remix'
)
}}
">Gitter Channel</button>
<button class="btn btn-primary sm-1"
data-id="settingsTabGitterChannelButton"
onclick="
${()
=>
{
window
.
open
(
'https://gitter.im/ethereum/remix'
)
}}
">Gitter Channel</button>
</div>
</div>
</div>`
</div>`
...
@@ -143,7 +143,7 @@ module.exports = class SettingsTab extends ViewPlugin {
...
@@ -143,7 +143,7 @@ module.exports = class SettingsTab extends ViewPlugin {
</div>
</div>
</div>`
</div>`
this
.
_view
.
el
=
yo
`
this
.
_view
.
el
=
yo
`
<div class="
${
css
.
settingsTabView
}
" id="settingsView">
<div class="
${
css
.
settingsTabView
}
" id="settingsView"
data-id="settingsTabSettingsView"
>
${
this
.
_view
.
config
.
homePage
}
${
this
.
_view
.
config
.
homePage
}
${
this
.
_view
.
config
.
general
}
${
this
.
_view
.
config
.
general
}
${
this
.
_view
.
gistToken
}
${
this
.
_view
.
gistToken
}
...
...
src/app/ui/copy-to-clipboard.js
View file @
e5325411
...
@@ -13,7 +13,7 @@ var css = csjs`
...
@@ -13,7 +13,7 @@ var css = csjs`
`
`
module
.
exports
=
function
copyToClipboard
(
getContent
,
tip
=
'Copy value to clipboard'
,
icon
=
'fa-copy'
)
{
module
.
exports
=
function
copyToClipboard
(
getContent
,
tip
=
'Copy value to clipboard'
,
icon
=
'fa-copy'
)
{
var
copyIcon
=
yo
`<i title="
${
tip
}
" class="
${
css
.
copyIcon
}
far
${
icon
}
" aria-hidden="true"></i>`
var
copyIcon
=
yo
`<i title="
${
tip
}
" class="
${
css
.
copyIcon
}
far
${
icon
}
"
data-id="copyToClipboardCopyIcon"
aria-hidden="true"></i>`
copyIcon
.
onclick
=
(
event
)
=>
{
copyIcon
.
onclick
=
(
event
)
=>
{
event
.
stopPropagation
()
event
.
stopPropagation
()
var
copiableContent
var
copiableContent
...
...
src/app/ui/landing-page/landing-page.js
View file @
e5325411
...
@@ -194,7 +194,7 @@ export class LandingPage extends ViewPlugin {
...
@@ -194,7 +194,7 @@ export class LandingPage extends ViewPlugin {
<div class="mb-5">
<div class="mb-5">
<h4>Environments</h4>
<h4>Environments</h4>
<div class="
${
css
.
enviroments
}
pt-2">
<div class="
${
css
.
enviroments
}
pt-2">
<button class="btn btn-lg btn-secondary mr-3" onclick=
${()
=>
startSolidity
()}
>Solidity</button>
<button class="btn btn-lg btn-secondary mr-3"
data-id="landingPageStartSolidity"
onclick=
${()
=>
startSolidity
()}
>Solidity</button>
<button class="btn btn-lg btn-secondary mr-3" onclick=
${()
=>
startVyper
()}
>Vyper</button>
<button class="btn btn-lg btn-secondary mr-3" onclick=
${()
=>
startVyper
()}
>Vyper</button>
</div>
</div>
</div>
</div>
...
...
src/app/ui/tooltip.js
View file @
e5325411
...
@@ -69,14 +69,14 @@ class Toaster {
...
@@ -69,14 +69,14 @@ class Toaster {
`
:
``
`
:
``
this
.
tooltip
=
yo
`
this
.
tooltip
=
yo
`
<div data-
i
d="tooltipPopup" class="
${
css
.
tooltip
}
alert alert-info p-2" onmouseenter=
${()
=>
{
over
()
}}
onmouseleave
=
$
{()
=>
{
out
()
}}
>
<div data-
share
d="tooltipPopup" class="
${
css
.
tooltip
}
alert alert-info p-2" onmouseenter=
${()
=>
{
over
()
}}
onmouseleave
=
$
{()
=>
{
out
()
}}
>
<
span
class
=
"px-2"
>
<
span
class
=
"px-2"
>
$
{
shortTooltipText
}
$
{
shortTooltipText
}
${
button
}
${
button
}
${
actionElement
}
${
actionElement
}
</span>
</span>
<span style="align-self: baseline;">
<span style="align-self: baseline;">
<button class="fas fa-times btn-info mx-1 p-0" onclick=
${()
=>
closeTheToaster
(
this
)}
></button>
<button
data-id="tooltipCloseButton"
class="fas fa-times btn-info mx-1 p-0" onclick=
${()
=>
closeTheToaster
(
this
)}
></button>
</span>
</span>
</div>`
</div>`
let
timeOut
=
()
=>
{
let
timeOut
=
()
=>
{
...
...
test-browser/commands/checkElementStyle.js
View file @
e5325411
...
@@ -16,7 +16,9 @@ function checkStyle (browser, cssSelector, styleProperty, expectedResult, callba
...
@@ -16,7 +16,9 @@ function checkStyle (browser, cssSelector, styleProperty, expectedResult, callba
browser
.
execute
(
function
(
cssSelector
,
styleProperty
)
{
browser
.
execute
(
function
(
cssSelector
,
styleProperty
)
{
return
window
.
getComputedStyle
(
document
.
querySelector
(
cssSelector
)).
getPropertyValue
(
styleProperty
)
return
window
.
getComputedStyle
(
document
.
querySelector
(
cssSelector
)).
getPropertyValue
(
styleProperty
)
},
[
cssSelector
,
styleProperty
],
function
(
result
)
{
},
[
cssSelector
,
styleProperty
],
function
(
result
)
{
browser
.
assert
.
equal
(
result
.
value
,
expectedResult
)
const
value
=
result
.
value
browser
.
assert
.
equal
(
value
.
trim
(),
expectedResult
)
callback
()
callback
()
})
})
}
}
...
...
test-browser/commands/switchBrowserTab.js
0 → 100644
View file @
e5325411
const
EventEmitter
=
require
(
'events'
)
/*
Switches between browser tabs
*/
class
SwitchBrowserTab
extends
EventEmitter
{
command
(
index
)
{
this
.
api
.
perform
((
browser
,
done
)
=>
{
browser
.
window_handles
((
result
)
=>
{
browser
.
switchWindow
(
result
.
value
[
index
])
done
()
})
this
.
emit
(
'complete'
)
})
return
this
}
}
module
.
exports
=
SwitchBrowserTab
test-browser/tests/generalSettings.js
0 → 100644
View file @
e5325411
This diff is collapsed.
Click to expand it.
test-browser/tests/pluginManager.js
View file @
e5325411
...
@@ -70,6 +70,7 @@ module.exports = {
...
@@ -70,6 +70,7 @@ module.exports = {
.
pause
(
5000
)
.
pause
(
5000
)
.
frame
(
0
)
.
frame
(
0
)
.
useXpath
().
click
(
"//span[text()='Compile']"
)
.
useXpath
().
click
(
"//span[text()='Compile']"
)
.
pause
(
2000
)
.
frameParent
()
.
frameParent
()
.
useCss
().
waitForElementVisible
(
'*[data-id="modalDialogContainer"]'
)
.
useCss
().
waitForElementVisible
(
'*[data-id="modalDialogContainer"]'
)
.
assert
.
containsText
(
'*[data-id="permissionHandlerMessage"]'
,
'ZOKRATES" WOULD LIKE TO ACCESS "FILE MANAGER" :'
)
.
assert
.
containsText
(
'*[data-id="permissionHandlerMessage"]'
,
'ZOKRATES" WOULD LIKE TO ACCESS "FILE MANAGER" :'
)
...
@@ -120,8 +121,8 @@ module.exports = {
...
@@ -120,8 +121,8 @@ module.exports = {
.
click
(
'*[data-id="localPluginRadioButtonsidePanel"]'
)
.
click
(
'*[data-id="localPluginRadioButtonsidePanel"]'
)
.
click
(
'*[data-id="modalDialogModalFooter"]'
)
.
click
(
'*[data-id="modalDialogModalFooter"]'
)
.
modalFooterOKClick
()
.
modalFooterOKClick
()
.
waitForElementVisible
(
'*[data-
id="tooltipPopup"]
'
)
.
waitForElementVisible
(
'*[data-
shared="tooltipPopup"]:nth-last-of-type(1)
'
)
.
assert
.
containsText
(
'*[data-
id="tooltipPopup"]
'
,
'Cannot create Plugin : This name has already been used'
)
.
assert
.
containsText
(
'*[data-
shared="tooltipPopup"]:nth-last-of-type(1)
'
,
'Cannot create Plugin : This name has already been used'
)
.
end
()
.
end
()
},
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment