Compare commits

..
20 Commits
Author SHA1 Message Date
kyle 6ca1fa1c42 Merge branch 'master' into cbt-run-e2e 2018-03-02 17:02:13 -08:00
Kyle Shockey 6549cbbb92 re-enable live output 2018-01-23 17:24:39 -08:00
Kyle Shockey 4c3a70cb0d enable Nightwatch parallelization 2018-01-23 17:08:23 -08:00
kyle cb53a2c677 Merge branch 'master' into cbt-run-e2e 2018-01-23 16:36:38 -08:00
Kyle Shockey fb8dc7bd1e Add max_duration CrossBrowserTesting capability 2018-01-18 16:42:23 -06:00
Kyle Shockey a89b50f862 Remove name 2018-01-11 20:13:28 -06:00
kyle 72eaad1ef9 Merge branch 'master' into cbt-run-e2e 2018-01-10 18:45:46 -06:00
Kyle Shockey 1dfb6f8ae6 Modify the CBT proxy after each suite 2018-01-09 16:25:44 -06:00
Kyle Shockey f151f67c45 Use rawgit to serve petstore.json spec 2018-01-09 16:01:48 -06:00
Kyle Shockey daa1ce8acf Override visibility timeout in CI 2018-01-09 15:52:51 -06:00
Kyle Shockey 40a2646844 Use json-server to serve test specs in test:ci:e2e 2018-01-09 15:41:47 -06:00
Kyle Shockey 1187707611 DONTMERGE: use surge.sh CDN deployments for e2e assets
just a test, this might be faster than using the CBT proxy.
2018-01-09 15:11:40 -06:00
Kyle Shockey 02beda929b bash is hard 2018-01-09 14:10:39 -06:00
Kyle Shockey 5266667ed3 Disable ESLint console error 2018-01-09 13:52:33 -06:00
Kyle Shockey a5457e3c75 Revert db.json changes 2018-01-09 13:46:41 -06:00
Kyle Shockey 4b0a4966fc Instruct Travis to use npm run test:ci 2018-01-09 13:42:41 -06:00
Kyle Shockey c2aa28d266 MOAR e2e testing! CI runs are now behind the ENABLE_CI_E2E flag 2018-01-09 13:39:37 -06:00
Kyle Shockey ebf2140fad Baseline CBT e2e CI setup 2018-01-08 18:32:05 -06:00
Kyle Shockey 04c63427d2 Alphabetize npm scripts 2018-01-08 17:12:27 -06:00
Kyle Shockey 3ce43d030c Use colon:divider in npm scripts 2018-01-08 17:11:02 -06:00
32 changed files with 235 additions and 223 deletions
+2 -1
View File
@@ -15,6 +15,7 @@ before_deploy:
- npm run build
env:
- DOCKER_IMAGE_NAME=swaggerapi/swagger-ui
script: npm run test:ci
deploy:
- provider: npm
email: apiteam@swagger.io
@@ -34,7 +35,7 @@ deploy:
node: '6.9'
after_success:
- if [ $DOCKER_HUB_USERNAME ]; then
docker login --username=$DOCKER_HUB_USERNAME --password=$DOCKER_HUB_PASSWORD;
docker login --email=$DOCKER_HUB_EMAIL --username=$DOCKER_HUB_USERNAME --password=$DOCKER_HUB_PASSWORD;
if [ ! -z "$TRAVIS_TAG" ]; then
DOCKER_IMAGE_TAG=$TRAVIS_TAG;
+1 -1
View File
@@ -22,7 +22,7 @@ The OpenAPI Specification has undergone 5 revisions since initial creation in 20
Swagger UI Version | Release Date | OpenAPI Spec compatibility | Notes
------------------ | ------------ | -------------------------- | -----
3.12.0 | 2018-03-02 | 2.0, 3.0 | [tag v3.12.0](https://github.com/swagger-api/swagger-ui/tree/v3.12.0)
3.11.0 | 2018-02-09 | 2.0, 3.0 | [tag v3.11.0](https://github.com/swagger-api/swagger-ui/tree/v3.11.0)
3.0.21 | 2017-07-26 | 2.0 | [tag v3.0.21](https://github.com/swagger-api/swagger-ui/tree/v3.0.21)
2.2.10 | 2017-01-04 | 1.1, 1.2, 2.0 | [tag v2.2.10](https://github.com/swagger-api/swagger-ui/tree/v2.2.10)
2.1.5 | 2016-07-20 | 1.1, 1.2, 2.0 | [tag v2.1.5](https://github.com/swagger-api/swagger-ui/tree/v2.1.5)
+20 -14
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -2
View File
File diff suppressed because one or more lines are too long
+2 -2
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
-43
View File
@@ -1,43 +0,0 @@
# Plug points
Swagger-UI exposes most of its internal logic through the plugin system.
Often, it is beneficial to override the core internals to achieve custom behavior.
### Note: Semantic Versioning
Swagger-UI's internal APIs are _not_ part of our public contract, which means that they can change without the major version changing.
If your custom plugins wrap, extend, override, or consume any internal core APIs, we recommend specifying a specific minor version of Swagger-UI to use in your application, because they will _not_ change between patch versions.
If you're installing Swagger-UI via NPM, for example, you can do this by using a tilde:
```js
{
"dependencies": {
"swagger-ui": "~3.11.0"
}
}
```
### `fn.opsFilter`
When using the `filter` option, tag names will be filtered by the user-provided value. If you'd like to customize this behavior, you can override the default `opsFilter` function.
For example, you can implement a multiple-phrase filter:
```js
const MultiplePhraseFilterPlugin = function() {
return {
fn: {
opsFilter: (taggedOps, phrase) => {
const phrases = phrase.split(", ")
return taggedOps.filter((val, key) => {
return phrases.some(item => key.indexOf(item) > -1)
})
}
}
}
}
```
-16
View File
@@ -2,22 +2,6 @@
A plugin is a function that returns an object - more specifically, the object may contain functions and components that augment and modify Swagger-UI's functionality.
### Note: Semantic Versioning
Swagger-UI's internal APIs are _not_ part of our public contract, which means that they can change without the major version changing.
If your custom plugins wrap, extend, override, or consume any internal core APIs, we recommend specifying a specific minor version of Swagger-UI to use in your application, because they will _not_ change between patch versions.
If you're installing Swagger-UI via NPM, for example, you can do this by using a tilde:
```js
{
"dependencies": {
"swagger-ui": "~3.11.0"
}
}
```
### Format
A plugin return value may contain any of these keys, where `stateKey` is a name for a piece of state:
+26 -24
View File
@@ -1,6 +1,6 @@
{
"name": "swagger-ui",
"version": "3.12.0",
"version": "3.11.0",
"main": "dist/swagger-ui.js",
"repository": "git@github.com:swagger-api/swagger-ui.git",
"contributors": [
@@ -14,30 +14,32 @@
],
"license": "Apache-2.0",
"scripts": {
"build": "npm run build-core && npm run build-bundle && npm run build-standalone",
"build-bundle": "webpack --config webpack-dist-bundle.config.js --colors",
"build-core": "webpack --config webpack-dist.config.js --colors",
"build-standalone": "webpack --config webpack-dist-standalone.config.js --colors",
"predev": "npm install",
"build": "npm run build:core && npm run build:bundle && npm run build:standalone",
"build:bundle": "webpack --config webpack-dist-bundle.config.js --colors",
"build:core": "webpack --config webpack-dist.config.js --colors",
"build:standalone": "webpack --config webpack-dist-standalone.config.js --colors",
"deps:check": "npm run deps:license && npm run deps:size",
"deps:license": "license-checker --production --csv --out $npm_package_config_deps_check_dir/licenses.csv && license-checker --development --csv --out $npm_package_config_deps_check_dir/licenses-dev.csv",
"deps:size": "webpack -p --config webpack.check.js --json | webpack-bundle-size-analyzer >| $npm_package_config_deps_check_dir/sizes.txt",
"dev": "npm-run-all --parallel hot-server open-localhost",
"watch": "webpack --config webpack-watch.config.js --watch --progress",
"open-localhost": "node -e 'require(\"open\")(\"http://localhost:3200\")'",
"hot-server": "webpack-dev-server --host 0.0.0.0 --config webpack-hot-dev-server.config.js --inline --hot --progress --content-base dev-helpers/",
"deps-license": "license-checker --production --csv --out $npm_package_config_deps_check_dir/licenses.csv && license-checker --development --csv --out $npm_package_config_deps_check_dir/licenses-dev.csv",
"deps-size": "webpack -p --config webpack.check.js --json | webpack-bundle-size-analyzer >| $npm_package_config_deps_check_dir/sizes.txt",
"deps-check": "npm run deps-license && npm run deps-size",
"lint": "eslint --cache --ext '.js,.jsx' src test",
"lint-errors": "eslint --cache --quiet --ext '.js,.jsx' src test",
"lint-fix": "eslint --cache --ext '.js,.jsx' src test --fix",
"test": "npm run lint-errors && npm run just-test-in-node",
"test-in-node": "npm run lint-errors && npm run just-test-in-node",
"just-test": "karma start --config karma.conf.js",
"just-test-in-node": "mocha --recursive --compilers js:babel-core/register test/core test/components test/bugs test/swagger-ui-dist-package test/xss",
"just-check-coverage": "nyc npm run just-test-in-node",
"test-e2e": "sleep 3 && nightwatch test/e2e/scenarios/ --config test/e2e/nightwatch.json",
"e2e-initial-render": "nightwatch test/e2e/scenarios/ --config test/e2e/nightwatch.json --group initial-render",
"mock-api": "json-server --watch test/e2e/db.json --port 3204",
"e2e": "npm-run-all --parallel -r hot-server mock-api test-e2e"
"lint:errors": "eslint --cache --quiet --ext '.js,.jsx' src test",
"lint:fix": "eslint --cache --ext '.js,.jsx' src test --fix",
"open-localhost": "node -e 'require(\"open\")(\"http://localhost:3200\")'",
"predev": "npm install",
"test": "npm run lint:errors && npm run test:nodejs",
"test:ci": "npm-run-all lint:errors test:nodejs test:ci:e2e",
"test:browser": "karma start --config karma.conf.js",
"test:ci:e2e": "if [ \"$ENABLE_CI_E2E\" = \"true\" ]; then npm-run-all --parallel -r test:e2e:mock-api test:e2e:all:cbt; else exit 0; fi",
"test:coverage": "nyc npm run test:nodejs",
"test:e2e": "npm-run-all --parallel -r hot-server test:e2e:mock-api test:e2e:all",
"test:e2e:all": "sleep 3 && nightwatch test/e2e/scenarios/ --config test/e2e/nightwatch.json",
"test:e2e:all:cbt": "sleep 3 && nightwatch test/e2e/scenarios/ --config test/e2e/nightwatch-cbt.json",
"test:e2e:initial-render": "nightwatch test/e2e/scenarios/ --config test/e2e/nightwatch.json --group initial-render",
"test:e2e:mock-api": "json-server --static test/e2e/specs --watch test/e2e/db.json --port 3204",
"test:nodejs": "mocha --recursive --compilers js:babel-core/register test/core test/components test/bugs test/swagger-ui-dist-package test/xss",
"watch": "webpack --config webpack-watch.config.js --watch --progress"
},
"dependencies": {
"@braintree/sanitize-url": "^2.0.2",
@@ -83,7 +85,7 @@
"scroll-to-element": "^2.0.0",
"serialize-error": "2.0.0",
"shallowequal": "0.2.2",
"swagger-client": "^3.5.1",
"swagger-client": "^3.5.0",
"url-parse": "^1.1.8",
"whatwg-fetch": "0.11.1",
"worker-loader": "^0.7.1",
@@ -104,6 +106,7 @@
"babel-preset-react": "^6.23.0",
"babel-preset-stage-0": "^6.22.0",
"babel-runtime": "^6.23.0",
"cbt_tunnels": "^0.3.0",
"chromedriver": "^2.30.1",
"copy-webpack-plugin": "^4.0.1",
"css-loader": "0.28.4",
@@ -144,7 +147,6 @@
"standard": "^10.0.2",
"standard-loader": "^6.0.1",
"style-loader": "0.18.2",
"tachyons-sass": "^4.9.2",
"url-loader": "0.5.9",
"webpack": "^2.6.1",
"webpack-bundle-size-analyzer": "^2.5.0"
+1 -1
View File
@@ -81,11 +81,11 @@ export default class Auths extends React.Component {
}).toArray()
}
<div className="auth-btn-wrapper">
<Button className="btn modal-btn auth btn-done" onClick={ this.close }>Done</Button>
{
nonOauthDefinitions.size === authorizedAuth.size ? <Button className="btn modal-btn auth" onClick={ this.logoutClick }>Logout</Button>
: <Button type="submit" className="btn modal-btn auth authorize">Authorize</Button>
}
<Button className="btn modal-btn auth btn-done" onClick={ this.close }>Close</Button>
</div>
</form>
}
-8
View File
@@ -39,13 +39,6 @@ export default class Oauth2 extends React.Component {
}
}
close = (e) => {
e.preventDefault()
let { authActions } = this.props
authActions.showDefinitions(false)
}
authorize =() => {
let { authActions, errActions, getConfigs, authSelectors } = this.props
let configs = getConfigs()
@@ -238,7 +231,6 @@ export default class Oauth2 extends React.Component {
: <Button className="btn modal-btn auth authorize" onClick={ this.authorize }>Authorize</Button>
)
}
<Button className="btn modal-btn auth btn-done" onClick={ this.close }>Close</Button>
</div>
</div>
+2 -9
View File
@@ -24,18 +24,11 @@ export default class ParameterRow extends Component {
let { specSelectors, pathMethod, param } = props
let defaultValue = param.get("default")
let xExampleValue = param.get("x-example")
let parameter = specSelectors.parameterWithMeta(pathMethod, param.get("name"), param.get("in"))
let value = parameter ? parameter.get("value") : ""
if( param.get("in") !== "body" ) {
if ( xExampleValue !== undefined && value === undefined && specSelectors.isSwagger2() ) {
this.onChangeWrapper(xExampleValue)
} else if ( defaultValue !== undefined && value === undefined ) {
this.onChangeWrapper(defaultValue)
}
if ( defaultValue !== undefined && value === undefined ) {
this.onChangeWrapper(defaultValue)
}
}
componentWillReceiveProps(props) {
@@ -27,7 +27,6 @@ export default class RequestBodyEditor extends PureComponent {
this.state = {
isEditBox: false,
userDidModify: false,
value: ""
}
}
@@ -60,11 +59,6 @@ export default class RequestBodyEditor extends PureComponent {
this.onChange(this.sample(explicitMediaType))
}
resetValueToSample = (explicitMediaType) => {
this.setState({ userDidModify: false })
this.setValueToSample(explicitMediaType)
}
sample = (explicitMediaType) => {
let { requestBody, mediaType } = this.props
let schema = requestBody.getIn(["content", explicitMediaType || mediaType, "schema"]).toJS()
@@ -84,7 +78,6 @@ export default class RequestBodyEditor extends PureComponent {
const isJson = /json/i.test(mediaType)
const inputValue = isJson ? e.target.value.trim() : e.target.value
this.setState({ userDidModify: true })
this.onChange(inputValue)
}
@@ -94,14 +87,13 @@ export default class RequestBodyEditor extends PureComponent {
let {
isExecute,
getComponent,
mediaType,
} = this.props
const Button = getComponent("Button")
const TextArea = getComponent("TextArea")
const HighlightCode = getComponent("highlightCode")
let { value, isEditBox, userDidModify } = this.state
let { value, isEditBox } = this.state
return (
<div className="body-param">
@@ -112,18 +104,14 @@ export default class RequestBodyEditor extends PureComponent {
value={ value }/>)
}
<div className="body-param-options">
<div className="body-param-edit">
{
!isExecute ? null
: <Button className={isEditBox ? "btn cancel body-param__example-edit" : "btn edit body-param__example-edit"}
onClick={this.toggleIsEditBox}>{ isEditBox ? "Cancel" : "Edit"}
</Button>
}
{ userDidModify &&
<Button className="btn ml3" onClick={() => { this.resetValueToSample(mediaType) }}>Reset</Button>
}
</div>
{
!isExecute ? null
: <div className="body-param-edit">
<Button className={isEditBox ? "btn cancel body-param__example-edit" : "btn edit body-param__example-edit"}
onClick={this.toggleIsEditBox}>{ isEditBox ? "Cancel" : "Edit"}
</Button>
</div>
}
</div>
</div>
+2 -2
View File
@@ -350,7 +350,7 @@ export function extractFileNameFromContentDispositionHeader(value){
if (responseFilename !== null && responseFilename.length > 1) {
return responseFilename[1]
}
return null
return null
}
// PascalCase, aka UpperCamelCase
@@ -559,7 +559,7 @@ export const validateParam = (param, isXml, isOAS3 = false) => {
} else if ( type === "array" ) {
let itemType
if ( !listCheck || !value.count() ) { return errors }
if ( !value.count() ) { return errors }
itemType = paramDetails.getIn(["items", "type"])
+1 -4
View File
@@ -45,10 +45,7 @@ export default class Topbar extends React.Component {
setSearch = (spec) => {
let search = parseSearch()
search["urls.primaryName"] = spec.name
const newUrl = `${window.location.protocol}//${window.location.host}${window.location.pathname}`
if(window && window.history && window.history.pushState) {
window.history.replaceState(null, "", `${newUrl}?${serializeSearch(search)}`)
}
window.location.search = serializeSearch(search)
}
setSelectedUrl = (selectedUrl) => {
-1
View File
@@ -21,7 +21,6 @@
.authorize
{
padding-right: 20px;
margin-right: 10px;
}
}
-1
View File
@@ -1,6 +1,5 @@
.swagger-ui
{
@import '~tachyons-sass/tachyons.scss';
@import 'mixins';
@import 'variables';
@import 'colors';
+32
View File
@@ -0,0 +1,32 @@
/* eslint-disable no-console */
var cbt = require("cbt_tunnels")
module.exports = {
baseAppUrl: "http://swagger-ui-ci-asset-deployment-test.surge.sh",
// use rawgit.com to get test/e2e/specs/petstore.json from master
// not a great solution, but CBT's proxy is too slow to fetch
// the data directly.
specPath: "https://rawgit.com/swagger-api/swagger-ui/master/test/e2e/specs/petstore.json",
visibleTimeout: 10000,
before: function(done) {
console.log("Starting up tunnel")
cbt.start({
username: process.env.CBT_USERNAME || "",
authkey: process.env.CBT_AUTHKEY || ""
}, function(err, data) {
if (err) {
done(err)
} else {
done(data)
}
})
},
after: function(done) {
console.log("Closing Down Tunnel")
cbt.stop()
done()
}
}
+6
View File
@@ -0,0 +1,6 @@
var cbt = require("cbt_tunnels")
module.exports = {
baseAppUrl: "http://localhost:3200",
specPath: "http://localhost:3200/test-specs/petstore.json"
}
+57
View File
@@ -0,0 +1,57 @@
{
"src_folders" : ["test/e2e/scenarios"],
"output_folder" : "reports",
"live_output": true,
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "test/e2e/pages",
"globals_path" : "test/e2e/cbt-globals.js",
"test_runner" : {
"type" : "mocha",
"options" : {
"ui" : "bdd",
"reporter" : "list"
}
},
"test_workers": {
"enabled": true,
"workers": 3
},
"selenium" : {
"start_process" : false,
"server_path" : "",
"log_path" : "",
"host" : "127.0.0.1",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "",
"webdriver.ie.driver" : ""
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://localhost",
"selenium_port" : 80,
"selenium_host" : "hub.crossbrowsertesting.com",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"username": "${CBT_USERNAME}",
"access_key": "${CBT_AUTHKEY}",
"desiredCapabilities": {
"acceptSslCerts": "1",
"browserName": "chrome",
"javascriptEnabled": "1",
"record_network" : "true",
"record_video" : "true",
"max_duration": 1200
}
}
}
}
+2 -2
View File
@@ -5,7 +5,7 @@
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "test/e2e/pages",
"globals_path" : "",
"globals_path" : "test/e2e/globals.js",
"test_workers" : {
"enabled" : true,
"workers" : "auto"
@@ -60,4 +60,4 @@
}
}
}
}
}
+1 -1
View File
@@ -20,7 +20,7 @@ module.exports = {
version: {
selector: ".version"
},
baseUrl: {
baseAppUrl: {
selector: ".base-url"
},
mainUrl: {
+13 -13
View File
@@ -2,35 +2,35 @@ describe("render informationContainer", function () {
let mainPage
let informationContainer
beforeEach(function (client, done) {
mainPage = client
.url("localhost:3200")
.url(client.globals.baseAppUrl)
.page.main()
client.waitForElementVisible(".download-url-input", 5000)
.pause(5000)
client.waitForElementVisible(".download-url-input", client.globals.visibleTimeout || 5000)
.pause(client.globals.visibleTimeout || 5000)
.clearValue(".download-url-input")
.setValue(".download-url-input", "http://localhost:3200/test-specs/petstore.json")
.setValue(".download-url-input", client.globals.specPath)
.click("button.download-url-button")
.pause(1000)
informationContainer = mainPage.section.informationContainer
done()
})
it("renders section", function (client) {
mainPage.expect.section("@informationContainer").to.be.visible.before(5000)
mainPage.expect.section("@informationContainer").to.be.visible.before(client.globals.visibleTimeout || 5000)
client.end()
})
it("renders content", function (client) {
informationContainer.waitForElementVisible("@title", 5000)
informationContainer.waitForElementVisible("@title", client.globals.visibleTimeout || 5000)
.assert.containsText("@title", "Swagger Petstore")
.assert.containsText("@version", "1.0.0")
.assert.containsText("@baseUrl", "[ Base URL: localhost:3204/ ]")
.assert.attributeEquals("@mainUrl", "href", "http://localhost:3200/test-specs/petstore.json")
.assert.containsText("@mainUrlContent", "http://localhost:3200/test-specs/petstore.json")
.assert.containsText("@baseAppUrl", "[ Base URL: localhost:3204/ ]")
.assert.attributeEquals("@mainUrl", "href", client.globals.specPath)
.assert.containsText("@mainUrlContent", client.globals.specPath)
.assert.containsText("@description", "This is a sample server Petstore server. You can find out more about Swagger at http://swagger.io or on irc.freenode.net, #swagger. For this sample, you can use the api key special-key to test the authorization filters.")
.assert.attributeEquals("@swaggerUrl", "href", "http://swagger.io/")
.assert.attributeEquals("@swaggerircUrl", "href", "http://swagger.io/irc/")
@@ -42,7 +42,7 @@ describe("render informationContainer", function () {
.assert.containsText("@contactDevLink", "Contact the developer")
.assert.attributeEquals("@aboutSwaggerLink", "href", "http://swagger.io/")
.assert.containsText("@aboutSwaggerLink", "Find out more about Swagger")
client.end()
})
})
})
+6 -6
View File
@@ -3,12 +3,12 @@ describe("Render Model Wrapper", function () {
beforeEach(function (client, done) {
mainPage = client
.url("localhost:3200")
.url(client.globals.baseAppUrl)
.page.main()
client.waitForElementVisible(".download-url-input", 5000)
.pause(5000)
client.waitForElementVisible(".download-url-input", client.globals.visibleTimeout || 5000)
.pause(client.globals.visibleTimeout || 5000)
.clearValue(".download-url-input")
.setValue(".download-url-input", "http://localhost:3200/test-specs/petstore.json")
.setValue(".download-url-input", client.globals.specPath)
.click("button.download-url-button")
.pause(1000)
@@ -20,13 +20,13 @@ describe("Render Model Wrapper", function () {
done()
})
it("Render model wrapper", function(client){
mainPage.expect.section("@modelWrapper").to.be.visible.before(5000)
mainPage.expect.section("@modelWrapper").to.be.visible.before(client.globals.visibleTimeout || 5000)
client.end()
})
it("Render model wrapper collapse", function(client){
modelWrapper.waitForElementVisible("@modelContainer", 5000)
modelWrapper.waitForElementVisible("@modelContainer", client.globals.visibleTimeout || 5000)
.click("@modelCollapse")
.assert.cssClassNotPresent("@modelContainer", "is-open")
+15 -15
View File
@@ -3,13 +3,13 @@ describe("render pet api container", function () {
let apiWrapper
beforeEach(function (client, done) {
mainPage = client
.url("localhost:3200")
.url(client.globals.baseAppUrl)
.page.main()
client.waitForElementVisible(".download-url-input", 5000)
.pause(5000)
client.waitForElementVisible(".download-url-input", client.globals.visibleTimeout || 5000)
.pause(client.globals.visibleTimeout || 5000)
.clearValue(".download-url-input")
.setValue(".download-url-input", "http://localhost:3200/test-specs/petstore.json")
.setValue(".download-url-input", client.globals.specPath)
.click("button.download-url-button")
.pause(1000)
@@ -25,13 +25,13 @@ describe("render pet api container", function () {
client.end()
})
it("test rendered pet container", function (client) {
apiWrapper.waitForElementVisible("@petAPIWrapper", 5000)
apiWrapper.waitForElementVisible("@petAPIWrapper", client.globals.visibleTimeout || 5000)
.expect.element("@petAPIWrapper").to.be.visible
client.end()
})
it("collapse pet wrapper", function (client) {
apiWrapper.waitForElementVisible("@petAPIWrapper", 5000)
apiWrapper.waitForElementVisible("@petAPIWrapper", client.globals.visibleTimeout || 5000)
.click("@petAPIWrapperBar")
.assert.cssClassNotPresent("@petAPIWrapper", "is-open")
@@ -41,7 +41,7 @@ describe("render pet api container", function () {
apiWrapper.waitForElementVisible("@petOperationPostContainer", 10000)
.assert.containsText("@petOperationPostTitle", "/pet")
.click("@petOperationPostCollpase")
.waitForElementVisible("@petOperationPostCollapseContainer", 5000)
.waitForElementVisible("@petOperationPostCollapseContainer", client.globals.visibleTimeout || 5000)
.click("@petOperationPostTryBtn")
.waitForElementVisible("@petOperationPostTryText", 1000)
.waitForElementVisible("@petOperationPostExecuteBtn", 1000)
@@ -52,9 +52,9 @@ describe("render pet api container", function () {
})
it("Testing post /pet api Mock data", function (client) {
apiWrapper.waitForElementVisible("@petOperationPostContainer", 5000)
apiWrapper.waitForElementVisible("@petOperationPostContainer", client.globals.visibleTimeout || 5000)
.click("@petOperationPostCollpase")
.waitForElementVisible("@petOperationPostCollapseContainer", 5000)
.waitForElementVisible("@petOperationPostCollapseContainer", client.globals.visibleTimeout || 5000)
.click("@petOperationPostTryBtn")
.waitForElementVisible("@petOperationPostExecuteBtn", 1000)
.click("@petOperationPostExecuteBtn")
@@ -72,7 +72,7 @@ describe("render pet api container", function () {
})
it("render put /pet api container", function (client) {
apiWrapper.waitForElementVisible("@petOperationPutContainer", 5000)
apiWrapper.waitForElementVisible("@petOperationPutContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@petOperationPutTitle", "/pet")
.click("@petOperationPutCollpase")
.waitForElementVisible("@petOperationPutCollapseContainer", 3000)
@@ -86,7 +86,7 @@ describe("render pet api container", function () {
})
it("Testing put /pet api Mock data", function (client) {
apiWrapper.waitForElementVisible("@petOperationPutContainer", 5000)
apiWrapper.waitForElementVisible("@petOperationPutContainer", client.globals.visibleTimeout || 5000)
.click("@petOperationPutCollpase")
.waitForElementVisible("@petOperationPutCollapseContainer", 3000)
.click("@petOperationPutTryBtn")
@@ -106,7 +106,7 @@ describe("render pet api container", function () {
})
it("render get by tag /pet api container", function (client) {
apiWrapper.waitForElementVisible("@petOperationGetByTagContainer", 5000)
apiWrapper.waitForElementVisible("@petOperationGetByTagContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@petOperationGetByTagTitle", "/pet/findByTags")
.click("@petOperationGetByTagCollpase")
.waitForElementVisible("@petOperationGetByTagCollapseContainer", 3000)
@@ -120,7 +120,7 @@ describe("render pet api container", function () {
})
it("Testing get by tag /pet api Mock data", function (client) {
apiWrapper.waitForElementVisible("@petOperationGetByTagContainer", 5000)
apiWrapper.waitForElementVisible("@petOperationGetByTagContainer", client.globals.visibleTimeout || 5000)
.click("@petOperationGetByTagCollpase")
.waitForElementVisible("@petOperationGetByTagCollapseContainer", 3000)
.click("@petOperationGetByTagTryBtn")
@@ -140,7 +140,7 @@ describe("render pet api container", function () {
})
it("render get by ID /pet/{petId} api container", function (client) {
apiWrapper.waitForElementVisible("@petOperationGetByIdContainer", 5000)
apiWrapper.waitForElementVisible("@petOperationGetByIdContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@petOperationGetByIdTitle", "/pet/{petId}")
.click("@petOperationGetByIdCollpase")
.waitForElementVisible("@petOperationGetByIdCollapseContainer", 3000)
@@ -153,7 +153,7 @@ describe("render pet api container", function () {
})
it("render get by ID /pet/{petId} api Mock data", function (client) {
apiWrapper.waitForElementVisible("@petOperationGetByIdContainer", 5000)
apiWrapper.waitForElementVisible("@petOperationGetByIdContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@petOperationGetByIdTitle", "/pet/{petId}")
.click("@petOperationGetByIdCollpase")
.waitForElementVisible("@petOperationGetByIdCollapseContainer", 3000)
+8 -8
View File
@@ -3,13 +3,13 @@ describe("render store api container", function(){
let apiWrapper
beforeEach( function(client, done){
mainPage = client
.url("localhost:3200")
.url(client.globals.baseAppUrl)
.page.main()
client.waitForElementVisible(".download-url-input", 5000)
client.waitForElementVisible(".download-url-input", client.globals.visibleTimeout || 5000)
.pause(3000)
.clearValue(".download-url-input")
.setValue(".download-url-input", "http://localhost:3200/test-specs/petstore.json")
.setValue(".download-url-input", client.globals.specPath)
.click("button.download-url-button")
.pause(1000)
@@ -21,23 +21,23 @@ describe("render store api container", function(){
done()
})
it("test rendered store container", function(client){
apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000)
apiWrapper.waitForElementVisible("@storeAPIWrapper", client.globals.visibleTimeout || 5000)
.expect.element("@storeAPIWrapper").to.be.visible
client.end()
})
it("callapse store wrapper", function(client){
apiWrapper.waitForElementVisible("@storeAPIWrapper", 5000)
apiWrapper.waitForElementVisible("@storeAPIWrapper", client.globals.visibleTimeout || 5000)
.click("@storeAPIWrapperBar")
.assert.cssClassNotPresent("@storeAPIWrapper", "is-open")
client.end()
})
it("render get /store/inventory api container", function (client) {
apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000)
apiWrapper.waitForElementVisible("@storeOperationGetContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@storeOperationGetTitle", "/store/inventory")
.click("@storeOperationGetCollpase")
.waitForElementVisible("@storeOperationGetCollapseContainer", 5000)
.waitForElementVisible("@storeOperationGetCollapseContainer", client.globals.visibleTimeout || 5000)
.click("@storeOperationGetTryBtn")
.waitForElementVisible("@storeOperationGetExecuteBtn", 1000)
.click("@storeOperationGetTryBtn")
@@ -47,7 +47,7 @@ describe("render store api container", function(){
})
it("Testing get /store/inventory api Mock data ", function (client) {
apiWrapper.waitForElementVisible("@storeOperationGetContainer", 5000)
apiWrapper.waitForElementVisible("@storeOperationGetContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@storeOperationGetTitle", "/store/inventory")
.click("@storeOperationGetCollpase")
.waitForElementVisible("@storeOperationGetCollapseContainer", 3000)
+10 -10
View File
@@ -3,13 +3,13 @@ describe("render user api container", function(){
let apiWrapper
beforeEach( function(client, done){
mainPage = client
.url("localhost:3200")
.url(client.globals.baseAppUrl)
.page.main()
client.waitForElementVisible(".download-url-input", 5000)
.pause(5000)
client.waitForElementVisible(".download-url-input", client.globals.visibleTimeout || 5000)
.pause(client.globals.visibleTimeout || 5000)
.clearValue(".download-url-input")
.setValue(".download-url-input", "http://localhost:3200/test-specs/petstore.json")
.setValue(".download-url-input", client.globals.specPath)
.click("button.download-url-button")
.pause(1000)
@@ -21,20 +21,20 @@ describe("render user api container", function(){
done()
})
it("test rendered user container", function(client){
apiWrapper.waitForElementVisible("@userAPIWrapper", 5000)
apiWrapper.waitForElementVisible("@userAPIWrapper", client.globals.visibleTimeout || 5000)
.expect.element("@userAPIWrapper").to.be.visible
client.end()
})
it("callapse user wrapper", function(client){
apiWrapper.waitForElementVisible("@userAPIWrapper", 5000)
apiWrapper.waitForElementVisible("@userAPIWrapper", client.globals.visibleTimeout || 5000)
.click("@userAPIWrapperBar")
.assert.cssClassNotPresent("@userAPIWrapper", "is-open")
client.end()
})
it("render put /user/{username} api container", function (client) {
apiWrapper.waitForElementVisible("@userOperationPutContainer", 5000)
apiWrapper.waitForElementVisible("@userOperationPutContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@userOperationPutTitle", "/user/{username}")
.click("@userOperationPutCollpase")
.waitForElementVisible("@userOperationPutCollapseContainer", 3000)
@@ -46,7 +46,7 @@ describe("render user api container", function(){
client.end()
})
it("Test put /user/{username} api Mock data", function (client) {
apiWrapper.waitForElementVisible("@userOperationPutContainer", 5000)
apiWrapper.waitForElementVisible("@userOperationPutContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@userOperationPutTitle", "/user/{username}")
.click("@userOperationPutCollpase")
.waitForElementVisible("@userOperationPutCollapseContainer", 3000)
@@ -63,7 +63,7 @@ describe("render user api container", function(){
client.end()
})
it("render delete /user/{username} api container", function (client) {
apiWrapper.waitForElementVisible("@userOperationDeleteContainer", 5000)
apiWrapper.waitForElementVisible("@userOperationDeleteContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@userOperationDeleteTitle", "/user/{username}")
.click("@userOperationDeleteCollpase")
.waitForElementVisible("@userOperationDeleteCollapseContainer", 3000)
@@ -75,7 +75,7 @@ describe("render user api container", function(){
client.end()
})
it("Test delete /user/{username} api Mock data", function (client) {
apiWrapper.waitForElementVisible("@userOperationDeleteContainer", 5000)
apiWrapper.waitForElementVisible("@userOperationDeleteContainer", client.globals.visibleTimeout || 5000)
.assert.containsText("@userOperationDeleteTitle", "/user/{username}")
.click("@userOperationDeleteCollpase")
.waitForElementVisible("@userOperationDeleteCollapseContainer", 3000)
+9 -9
View File
@@ -4,15 +4,15 @@ describe("Render scheme", function () {
beforeEach(function (client, done) {
mainPage = client
.url("localhost:3200")
.url(client.globals.baseAppUrl)
.page.main()
schemeContainer = mainPage.section.schemeContainer
client.waitForElementVisible(".download-url-input", 5000)
.pause(5000)
client.waitForElementVisible(".download-url-input", client.globals.visibleTimeout || 5000)
.pause(client.globals.visibleTimeout || 5000)
.clearValue(".download-url-input")
.setValue(".download-url-input", "http://localhost:3200/test-specs/petstore.json")
.setValue(".download-url-input", client.globals.specPath)
.click("button.download-url-button")
.pause(1000)
@@ -21,25 +21,25 @@ describe("Render scheme", function () {
})
it("render section", function (client) {
mainPage.expect.section("@schemeContainer").to.be.visible.before(5000)
mainPage.expect.section("@schemeContainer").to.be.visible.before(client.globals.visibleTimeout || 5000)
client.end()
})
it("render scheme option", function (client) {
schemeContainer.waitForElementVisible("@httpOption", 5000)
schemeContainer.waitForElementVisible("@httpOption", client.globals.visibleTimeout || 5000)
.expect.element("@httpOption").to.be.selected
client.end()
})
it("render authorized button", function (client) {
schemeContainer.waitForElementVisible("@btnAuthorize", 5000)
schemeContainer.waitForElementVisible("@btnAuthorize", client.globals.visibleTimeout || 5000)
.expect.element("@btnAuthorize").to.be.visible
client.end()
})
it("render click event", function(client) {
schemeContainer.waitForElementVisible("@btnAuthorize", 5000)
schemeContainer.waitForElementVisible("@btnAuthorize", client.globals.visibleTimeout || 5000)
.click("@btnAuthorize")
.assert.visible("@authorizationModal")
.assert.containsText("@appName", "Application: your-app-name")
@@ -49,4 +49,4 @@ describe("Render scheme", function () {
client.end()
})
})
})
+3 -3
View File
@@ -18,15 +18,15 @@ describe("initial render", function () {
beforeEach(function (client, done) {
mainPage = client
.url("localhost:3200")
.url(client.globals.baseAppUrl)
.page.main()
topbar = mainPage.section.topbar
client.waitForElementVisible(".download-url-input", 10000)
.pause(5000)
.pause(client.globals.visibleTimeout || 5000)
.clearValue(".download-url-input")
.setValue(".download-url-input", "http://localhost:3200/test-specs/petstore.json")
.setValue(".download-url-input", client.globals.specPath)
.click("button.download-url-button")
.pause(1000)