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
c94af821
Unverified
Commit
c94af821
authored
Feb 21, 2020
by
yann300
Committed by
GitHub
Feb 21, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2593 from ethereum/terminal-e2e-tests
Terminal e2e tests
parents
8beaf905
83c517ea
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
103 additions
and
26 deletions
+103
-26
package.json
package.json
+2
-1
terminal.js
src/app/panels/terminal.js
+2
-1
auto-complete-popup.js
src/app/ui/auto-complete-popup.js
+1
-1
executeScript.js
test-browser/commands/executeScript.js
+2
-1
journalChildIncludes.js
test-browser/commands/journalChildIncludes.js
+30
-0
journalLastChild.js
test-browser/commands/journalLastChild.js
+2
-2
journalLastChildIncludes.js
test-browser/commands/journalLastChildIncludes.js
+3
-3
console.js
test-browser/tests/console.js
+0
-17
gist.js
test-browser/tests/gist.js
+1
-0
importFromGist.js
test-browser/tests/importFromGist.js
+1
-0
terminal.js
test-browser/tests/terminal.js
+59
-0
No files found.
package.json
View file @
c94af821
...
...
@@ -172,8 +172,9 @@
"nightwatch_local_specialFunctions"
:
"nightwatch ./test-browser/tests/specialFunctions.js --config nightwatch.js --env chrome "
,
"nightwatch_local_solidityUnittests"
:
"nightwatch ./test-browser/tests/solidityUnittests.js --config nightwatch.js --env chrome "
,
"nightwatch_local_remixd"
:
"nightwatch ./test-browser/tests/remixd.js --config nightwatch.js --env chrome "
,
"nightwatch_local_
console"
:
"nightwatch ./test-browser/tests/console
.js --config nightwatch.js --env chrome "
,
"nightwatch_local_
terminal"
:
"nightwatch ./test-browser/tests/terminal
.js --config nightwatch.js --env chrome "
,
"nightwatch_local_gist"
:
"nightwatch ./test-browser/tests/gist.js --config nightwatch.js --env chrome "
,
"nightwatch_local_importFromGist"
:
"nightwatch ./test-browser/tests/importFromGist.js --config nightwatch.js --env chrome "
,
"nightwatch_local_workspace"
:
"nightwatch ./test-browser/tests/workspace.js --config nightwatch.js --env chrome "
,
"nightwatch_local_defaultLayout"
:
"nightwatch ./test-browser/tests/defaultLayout.js --config nightwatch.js --env chrome "
,
"nightwatch_local_publishContract"
:
"nightwatch ./test-browser/tests/publishContract.js --config nightwatch.js --env chrome "
,
...
...
src/app/panels/terminal.js
View file @
c94af821
...
...
@@ -113,13 +113,14 @@ class Terminal extends Plugin {
render
()
{
var
self
=
this
if
(
self
.
_view
.
el
)
return
self
.
_view
.
el
self
.
_view
.
journal
=
yo
`<div id="journal" class=
${
css
.
journal
}
></div>`
self
.
_view
.
journal
=
yo
`<div id="journal" class=
${
css
.
journal
}
data-id="terminalJournal"
></div>`
self
.
_view
.
input
=
yo
`
<span class=
${
css
.
input
}
onload=
${()
=>
{
this
.
focus
()
}}
onpaste
=
$
{
paste
}
onkeydown=
${
change
}
></span>
`
self
.
_view
.
input
.
setAttribute
(
'spellcheck'
,
'false'
)
self
.
_view
.
input
.
setAttribute
(
'contenteditable'
,
'true'
)
self
.
_view
.
input
.
setAttribute
(
'id'
,
'terminalCliInput'
)
self
.
_view
.
input
.
setAttribute
(
'data-id'
,
'terminalCliInput'
)
self
.
_view
.
input
.
innerText
=
'
\
n'
self
.
_view
.
cli
=
yo
`
...
...
src/app/ui/auto-complete-popup.js
View file @
c94af821
...
...
@@ -41,7 +41,7 @@ class AutoCompletePopup {
<div>
${
self
.
data
.
_options
.
map
((
item
,
index
)
=>
{
return
yo
`
<div class="
${
css
.
autoCompleteItem
}
${
css
.
listHandlerHide
}
item
${
self
.
_selectedElement
===
index
?
'border border-primary'
:
''
}
">
<div
data-id="autoCompletePopUpAutoCompleteItem"
class="
${
css
.
autoCompleteItem
}
${
css
.
listHandlerHide
}
item
${
self
.
_selectedElement
===
index
?
'border border-primary'
:
''
}
">
<div value=
${
index
}
onclick=
${(
event
)
=>
{
self
.
handleSelect
(
event
.
srcElement
.
innerText
)
}}
>
$
{
getKeyOf
(
item
)}
</div>
...
...
test-browser/commands/executeScript.js
View file @
c94af821
...
...
@@ -3,7 +3,8 @@ const EventEmitter = require('events')
class
ExecuteScript
extends
EventEmitter
{
command
(
script
)
{
this
.
api
.
click
(
'#terminalCli'
)
.
clearValue
(
'span[data-id="terminalCliInput"]'
)
.
click
(
'div[data-id="terminalCli"]'
)
.
keys
(
script
)
.
keys
(
this
.
api
.
Keys
.
ENTER
)
.
keys
(
this
.
api
.
Keys
.
ENTER
)
// that's a bug... sometimes we need to press 2 times to execute a command
...
...
test-browser/commands/journalChildIncludes.js
0 → 100644
View file @
c94af821
const
EventEmitter
=
require
(
'events'
)
/*
Checks if any child elements of journal (console) contains a matching value.
*/
class
JournalChildIncludes
extends
EventEmitter
{
command
(
val
)
{
let
isTextFound
=
false
const
browser
=
this
.
api
this
.
api
.
elements
(
'css selector'
,
'*[data-id="terminalJournal"]'
,
(
res
)
=>
{
res
.
value
.
forEach
(
function
(
jsonWebElement
)
{
const
jsonWebElementId
=
jsonWebElement
.
ELEMENT
browser
.
elementIdText
(
jsonWebElementId
,
(
jsonElement
)
=>
{
const
text
=
jsonElement
.
value
if
(
text
.
indexOf
(
val
)
!==
-
1
)
isTextFound
=
true
})
})
})
browser
.
perform
(()
=>
{
browser
.
assert
.
ok
(
isTextFound
,
isTextFound
?
`<*[data-id="terminalJournal"]> contains
${
val
}
.`
:
`
${
val
}
not found in <*[data-id="terminalJournal"]> div:last-child>`
)
this
.
emit
(
'complete'
)
})
return
this
}
}
module
.
exports
=
JournalChildIncludes
test-browser/commands/journalLastChild.js
View file @
c94af821
...
...
@@ -3,8 +3,8 @@ const EventEmitter = require('events')
class
JournalLastChild
extends
EventEmitter
{
command
(
val
)
{
this
.
api
.
waitForElementVisible
(
'
#journal
> div:last-child'
,
10000
)
.
assert
.
containsText
(
'
#journal
> div:last-child'
,
val
).
perform
(()
=>
{
.
waitForElementVisible
(
'
*[data-id="terminalJournal"]
> div:last-child'
,
10000
)
.
assert
.
containsText
(
'
*[data-id="terminalJournal"]
> div:last-child'
,
val
).
perform
(()
=>
{
this
.
emit
(
'complete'
)
})
return
this
...
...
test-browser/commands/journalLastChildIncludes.js
View file @
c94af821
...
...
@@ -6,11 +6,11 @@ const EventEmitter = require('events')
class
JournalLastChildIncludes
extends
EventEmitter
{
command
(
val
)
{
this
.
api
.
waitForElementVisible
(
'
#journal
> div:last-child'
,
10000
)
.
getText
(
'
#journal
> div:last-child'
,
(
result
)
=>
{
.
waitForElementVisible
(
'
*[data-id="terminalJournal"]
> div:last-child'
,
10000
)
.
getText
(
'
*[data-id="terminalJournal"]
> div:last-child'
,
(
result
)
=>
{
console
.
log
(
'JournalLastChildIncludes'
,
result
.
value
)
if
(
result
.
value
.
indexOf
(
val
)
===
-
1
)
return
this
.
api
.
assert
.
fail
(
`wait for
${
val
}
in
${
result
.
value
}
`
)
else
this
.
api
.
assert
.
ok
(
`<
#journal
> div:last-child> contains
${
val
}
.`
)
else
this
.
api
.
assert
.
ok
(
`<
*[data-id="terminalJournal"]
> div:last-child> contains
${
val
}
.`
)
this
.
emit
(
'complete'
)
})
return
this
...
...
test-browser/tests/console.js
deleted
100644 → 0
View file @
8beaf905
'use strict'
var
init
=
require
(
'../helpers/init'
)
var
sauce
=
require
(
'./sauce'
)
module
.
exports
=
{
before
:
function
(
browser
,
done
)
{
init
(
browser
,
done
)
},
'SimpleExecutionConsole'
:
function
(
browser
)
{
browser
.
waitForElementVisible
(
'#terminalCli'
,
10000
)
.
executeScript
(
'1+1'
)
.
journalLastChild
(
'2'
)
.
end
()
},
tearDown
:
sauce
}
test-browser/tests/gist.js
View file @
c94af821
...
...
@@ -39,5 +39,6 @@ module.exports = {
})
.
end
()
},
tearDown
:
sauce
}
test-browser/tests/importFromGist.js
View file @
c94af821
...
...
@@ -11,6 +11,7 @@ module.exports = {
before
:
function
(
browser
,
done
)
{
init
(
browser
,
done
)
},
'Load Gist Modal'
:
function
(
browser
)
{
browser
.
waitForElementVisible
(
'#icon-panel'
,
10000
)
...
...
test-browser/tests/terminal.js
0 → 100644
View file @
c94af821
'use strict'
var
init
=
require
(
'../helpers/init'
)
var
sauce
=
require
(
'./sauce'
)
module
.
exports
=
{
before
:
function
(
browser
,
done
)
{
init
(
browser
,
done
,
'http://127.0.0.1:8080?plugins=solidity,udapp'
,
false
)
},
'Should execution a simple console command'
:
function
(
browser
)
{
browser
.
waitForElementVisible
(
'*[data-id="terminalCli"]'
,
10000
)
.
executeScript
(
'1+1'
)
.
journalLastChild
(
'2'
)
},
'Should clear console'
:
function
(
browser
)
{
browser
.
waitForElementVisible
(
'*[data-id="terminalCli"]'
)
.
journalChildIncludes
(
'Welcome to Remix'
)
.
click
(
'#clearConsole'
)
.
assert
.
containsText
(
'*[data-id="terminalJournal"]'
,
''
)
},
'Should display auto-complete menu'
:
function
(
browser
)
{
browser
.
waitForElementVisible
(
'*[data-id="terminalCli"]'
)
.
click
(
'*[data-id="terminalCli"]'
)
.
keys
(
'remix.'
)
.
assert
.
visible
(
'*[data-id="autoCompletePopUpAutoCompleteItem"]'
)
},
'Should execute remix.help() command'
:
function
(
browser
)
{
browser
.
waitForElementVisible
(
'*[data-id="terminalCli"]'
)
.
executeScript
(
'remix.help()'
)
.
journalChildIncludes
(
'remix.call(message: {name, key, payload})'
)
.
journalChildIncludes
(
'remix.getFile(path)'
)
.
journalChildIncludes
(
'remix.debug(hash)'
)
.
journalChildIncludes
(
'remix.loadgist(id)'
)
.
journalChildIncludes
(
'remix.loadurl(url)'
)
.
journalChildIncludes
(
'remix.setproviderurl(url)'
)
.
journalChildIncludes
(
'remix.execute(filepath)'
)
.
journalChildIncludes
(
'remix.exeCurrent()'
)
.
journalChildIncludes
(
'remix.help()'
)
.
journalChildIncludes
(
'remix.debugHelp()'
)
},
'Should execute remix.debugHelp() command'
:
function
(
browser
)
{
browser
.
waitForElementVisible
(
'*[data-id="terminalCli"]'
)
.
executeScript
(
'remix.debugHelp()'
)
.
journalChildIncludes
(
'Here are some examples of scripts that can be run (using remix.exeCurrent() or directly from the console)'
)
.
journalChildIncludes
(
'Please see https://www.npmjs.com/package/remix-debug for more informations'
)
.
end
()
},
tearDown
:
sauce
}
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