Skip to content

Commit 270fc8b

Browse files
Test add/delete 3 types of queues
1 parent 3c86d79 commit 270fc8b

File tree

9 files changed

+233
-20
lines changed

9 files changed

+233
-20
lines changed

deps/rabbitmq_management/priv/www/js/tmpl/queue.ejs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@
395395
</div>
396396
<% } %>
397397

398-
<div class="section-hidden">
398+
<div class="section-hidden" id="delete">
399399
<h2>Delete</h2>
400400
<div class="hider">
401401
<form action="#/queues" method="delete" class="confirm-queue inline-form">

selenium/test/pageobjects/BasePage.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ module.exports = class BasePage {
4444
async selectRefreshOption(option) {
4545
return this.selectOption(SELECT_REFRESH, option)
4646
}
47+
4748
async waitForOverviewTab() {
4849
await this.driver.sleep(250)
4950
return this.waitForDisplayed(OVERVIEW_TAB)
@@ -119,6 +120,11 @@ module.exports = class BasePage {
119120
const select = await new Select(selectable)
120121
return select.selectByVisibleText(text)
121122
}
123+
async selectOptionByValue(locator, value) {
124+
let selectable = await this.waitForDisplayed(locator)
125+
const select = await new Select(selectable)
126+
return select.selectByValue(value)
127+
}
122128

123129
async getSelectableVhosts() {
124130
const table_model = await this.getSelectableOptions(SELECT_VHOSTS)

selenium/test/pageobjects/QueuePage.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ const { By, Key, until, Builder } = require('selenium-webdriver')
33
const BasePage = require('./BasePage')
44

55

6-
const QUEUE_NAME = By.css('div#main h1 p')
6+
const QUEUE_NAME = By.css('div#main h1 b')
77

8+
const DELETE_SECTION = By.css('div#main div#delete')
9+
const DELETE_BUTTON = By.css('div#main div#delete input[type=submit]')
810

911
module.exports = class QueuePage extends BasePage {
1012
async isLoaded() {
@@ -13,4 +15,12 @@ module.exports = class QueuePage extends BasePage {
1315
async getName() {
1416
return this.getText(QUEUE_NAME)
1517
}
18+
async ensureDeleteQueueSectionIsVisible() {
19+
await this.click(DELETE_SECTION)
20+
return driver.findElement(DELETE_SECTION).isDisplayed()
21+
}
22+
async deleteQueue() {
23+
await this.click(DELETE_BUTTON)
24+
return this.acceptAlert()
25+
}
1626
}

selenium/test/pageobjects/QueuesAndStreamsPage.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
const { By, Key, until, Builder } = require('selenium-webdriver')
22

3+
const { delay } = require('../utils')
4+
35
const BasePage = require('./BasePage')
46

57

@@ -10,6 +12,7 @@ const FILTER_BY_QUEUE_NAME = By.css('div.filter input#queues-name')
1012

1113
const TABLE_SECTION = By.css('div#queues-table-section table')
1214
const FORM_QUEUE_NAME = By.css('div#add-new-queue form input[name="name"]')
15+
const FORM_QUEUE_TYPE = By.css('div#add-new-queue form select[name="queuetype"]')
1316
const ADD_BUTTON = By.css('div#add-new-queue form input[type=submit]')
1417

1518
module.exports = class QueuesAndStreamsPage extends BasePage {
@@ -24,7 +27,7 @@ module.exports = class QueuesAndStreamsPage extends BasePage {
2427
}
2528
async clickOnQueue(vhost, name) {
2629
return this.click(By.css(
27-
"div#queues-table-section table tbody tr td a[href='#/queue/" + vhost + "/" + name + "']"))
30+
"div#queues-table-section table.list tbody tr td a[href='#/queues/" + vhost + "/" + name + "']"))
2831
}
2932
async ensureAddQueueSectionIsVisible() {
3033
await this.click(ADD_NEW_QUEUE_SECTION)
@@ -35,12 +38,13 @@ module.exports = class QueuesAndStreamsPage extends BasePage {
3538
return driver.findElement(PAGING_SECTION).isDisplayed()
3639
}
3740
async fillInAddNewQueue(queueDetails) {
41+
await this.selectOptionByValue(FORM_QUEUE_TYPE, queueDetails.type)
42+
await delay(1000)
3843
await this.sendKeys(FORM_QUEUE_NAME, queueDetails.name)
3944
return this.click(ADD_BUTTON)
4045
}
4146
async filterQueues(filterValue) {
4247
await this.waitForDisplayed(FILTER_BY_QUEUE_NAME)
43-
return this.sendKeys(FILTER_BY_QUEUE_NAME, filterValue + Key.RETURN)
44-
48+
return this.sendKeys(FILTER_BY_QUEUE_NAME, filterValue + Key.RETURN)
4549
}
4650
}

selenium/test/pageobjects/StreamPage.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ const { By, Key, until, Builder } = require('selenium-webdriver')
33
const BasePage = require('./BasePage')
44

55

6-
const STREAM_NAME = By.css('div#main h1 p')
6+
const STREAM_NAME = By.css('div#main h1 b')
7+
const DELETE_SECTION = By.css('div#main div#delete')
8+
const DELETE_BUTTON = By.css('div#main div#delete input[type=submit]')
79

810

911
module.exports = class StreamPage extends BasePage {
@@ -13,4 +15,12 @@ module.exports = class StreamPage extends BasePage {
1315
async getName() {
1416
return this.getText(STREAM_NAME)
1517
}
18+
async ensureDeleteQueueSectionIsVisible() {
19+
await this.click(DELETE_SECTION)
20+
return driver.findElement(DELETE_SECTION).isDisplayed()
21+
}
22+
async deleteStream() {
23+
await this.click(DELETE_BUTTON)
24+
return this.acceptAlert()
25+
}
1626
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
const { By, Key, until, Builder } = require('selenium-webdriver')
2+
require('chromedriver')
3+
const assert = require('assert')
4+
const { buildDriver, goToHome, captureScreensFor, teardown, delay } = require('../utils')
5+
6+
const LoginPage = require('../pageobjects/LoginPage')
7+
const OverviewPage = require('../pageobjects/OverviewPage')
8+
const QueuesAndStreamsPage = require('../pageobjects/QueuesAndStreamsPage')
9+
const QueuePage = require('../pageobjects/QueuePage')
10+
const StreamPage = require('../pageobjects/StreamPage')
11+
12+
describe('Classic queues', function () {
13+
let login
14+
let queuesAndStreams
15+
let queue
16+
let stream
17+
let overview
18+
let captureScreen
19+
let queueName
20+
21+
before(async function () {
22+
driver = buildDriver()
23+
await goToHome(driver)
24+
login = new LoginPage(driver)
25+
overview = new OverviewPage(driver)
26+
queuesAndStreams = new QueuesAndStreamsPage(driver)
27+
queue = new QueuePage(driver)
28+
stream = new StreamPage(driver)
29+
captureScreen = captureScreensFor(driver, __filename)
30+
31+
await login.login('management', 'guest')
32+
if (!await overview.isLoaded()) {
33+
throw new Error('Failed to login')
34+
}
35+
await overview.selectRefreshOption("Do not refresh")
36+
await overview.clickOnQueuesTab()
37+
38+
queueName = "test_" + Math.floor(Math.random() * 1000)
39+
})
40+
41+
it('add classic queue and view it', async function () {
42+
await queuesAndStreams.ensureAddQueueSectionIsVisible()
43+
44+
await queuesAndStreams.fillInAddNewQueue({"name" : queueName, "type" : "classic"})
45+
await delay(5000)
46+
await queuesAndStreams.filterQueues(queueName)
47+
await delay(2000)
48+
let table = await queuesAndStreams.getQueuesTable(5)
49+
assert.equal(1, table.length)
50+
assert.equal(table[0][0], '/')
51+
assert.equal(table[0][1], queueName)
52+
assert.equal(table[0][2], 'classic')
53+
assert.equal(table[0][4], 'running')
54+
55+
await queuesAndStreams.clickOnQueue("%2F", queueName)
56+
await queue.isLoaded()
57+
assert.equal(queueName, await queue.getName())
58+
59+
})
60+
61+
after(async function () {
62+
await queue.ensureDeleteQueueSectionIsVisible()
63+
await queue.deleteQueue()
64+
65+
await teardown(driver, this, captureScreen)
66+
})
67+
})
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
const { By, Key, until, Builder } = require('selenium-webdriver')
2+
require('chromedriver')
3+
const assert = require('assert')
4+
const { buildDriver, goToHome, captureScreensFor, teardown, delay } = require('../utils')
5+
6+
const LoginPage = require('../pageobjects/LoginPage')
7+
const OverviewPage = require('../pageobjects/OverviewPage')
8+
const QueuesAndStreamsPage = require('../pageobjects/QueuesAndStreamsPage')
9+
const QueuePage = require('../pageobjects/QueuePage')
10+
const StreamPage = require('../pageobjects/StreamPage')
11+
12+
describe('Quorum queues', function () {
13+
let login
14+
let queuesAndStreams
15+
let queue
16+
let stream
17+
let overview
18+
let captureScreen
19+
20+
before(async function () {
21+
driver = buildDriver()
22+
await goToHome(driver)
23+
login = new LoginPage(driver)
24+
overview = new OverviewPage(driver)
25+
queuesAndStreams = new QueuesAndStreamsPage(driver)
26+
queue = new QueuePage(driver)
27+
stream = new StreamPage(driver)
28+
captureScreen = captureScreensFor(driver, __filename)
29+
30+
await login.login('management', 'guest')
31+
if (!await overview.isLoaded()) {
32+
throw new Error('Failed to login')
33+
}
34+
await overview.selectRefreshOption("Do not refresh")
35+
await overview.clickOnQueuesTab()
36+
37+
})
38+
it('add quorum queue and view it', async function () {
39+
await queuesAndStreams.ensureAddQueueSectionIsVisible()
40+
let queueName = "test_" + Math.floor(Math.random() * 1000)
41+
await queuesAndStreams.fillInAddNewQueue({"name" : queueName, "type" : "quorum"})
42+
await delay(5000)
43+
await queuesAndStreams.filterQueues(queueName)
44+
await delay(2000)
45+
let table = await queuesAndStreams.getQueuesTable(5)
46+
assert.equal(1, table.length)
47+
assert.equal(table[0][0], '/')
48+
assert.equal(table[0][1], queueName)
49+
assert.equal(table[0][2], 'quorum')
50+
assert.equal(table[0][4], 'running')
51+
52+
await queuesAndStreams.clickOnQueue("%2F", queueName)
53+
await queue.isLoaded()
54+
assert.equal(queueName, await queue.getName())
55+
56+
})
57+
58+
after(async function () {
59+
await queue.ensureDeleteQueueSectionIsVisible()
60+
await queue.deleteQueue()
61+
62+
await teardown(driver, this, captureScreen)
63+
})
64+
})
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
const { By, Key, until, Builder } = require('selenium-webdriver')
2+
require('chromedriver')
3+
const assert = require('assert')
4+
const { buildDriver, goToHome, captureScreensFor, teardown, delay } = require('../utils')
5+
6+
const LoginPage = require('../pageobjects/LoginPage')
7+
const OverviewPage = require('../pageobjects/OverviewPage')
8+
const QueuesAndStreamsPage = require('../pageobjects/QueuesAndStreamsPage')
9+
const QueuePage = require('../pageobjects/QueuePage')
10+
const StreamPage = require('../pageobjects/StreamPage')
11+
12+
describe('Streams', function () {
13+
let login
14+
let queuesAndStreams
15+
let queue
16+
let stream
17+
let overview
18+
let captureScreen
19+
20+
before(async function () {
21+
driver = buildDriver()
22+
await goToHome(driver)
23+
login = new LoginPage(driver)
24+
overview = new OverviewPage(driver)
25+
queuesAndStreams = new QueuesAndStreamsPage(driver)
26+
queue = new QueuePage(driver)
27+
stream = new StreamPage(driver)
28+
captureScreen = captureScreensFor(driver, __filename)
29+
30+
await login.login('management', 'guest')
31+
if (!await overview.isLoaded()) {
32+
throw new Error('Failed to login')
33+
}
34+
await overview.selectRefreshOption("Do not refresh")
35+
await overview.clickOnQueuesTab()
36+
37+
})
38+
it('add stream and view it', async function () {
39+
await queuesAndStreams.ensureAddQueueSectionIsVisible()
40+
let queueName = "test_" + Math.floor(Math.random() * 1000)
41+
await queuesAndStreams.fillInAddNewQueue({"name" : queueName, "type" : "stream"})
42+
await delay(5000)
43+
await queuesAndStreams.filterQueues(queueName)
44+
await delay(2000)
45+
let table = await queuesAndStreams.getQueuesTable(5)
46+
assert.equal(1, table.length)
47+
assert.equal(table[0][0], '/')
48+
assert.equal(table[0][1], queueName)
49+
assert.equal(table[0][2], 'stream')
50+
assert.equal(table[0][4], 'running')
51+
52+
await queuesAndStreams.clickOnQueue("%2F", queueName)
53+
await stream.isLoaded()
54+
assert.equal(queueName, await stream.getName())
55+
56+
})
57+
58+
59+
after(async function () {
60+
await stream.ensureDeleteQueueSectionIsVisible()
61+
await stream.deleteStream()
62+
63+
await teardown(driver, this, captureScreen)
64+
})
65+
})

selenium/test/queuesAndStreams/management.js

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,14 @@ describe('Queues and Streams management', function () {
3333
}
3434
await overview.selectRefreshOption("Do not refresh")
3535
await overview.clickOnQueuesTab()
36+
3637
})
3738

3839
it('display summary of queues and streams', async function () {
3940
let text = await queuesAndStreams.getPagingSectionHeaderText()
4041
assert.equal(true, text.startsWith('All queues') )
4142
})
4243

43-
it('add queue', async function () {
44-
await queuesAndStreams.ensureAddQueueSectionIsVisible()
45-
let queueName = "test_" + Math.floor(Math.random() * 1000)
46-
await queuesAndStreams.fillInAddNewQueue({"name" : queueName})
47-
await delay(1000)
48-
await queuesAndStreams.filterQueues(queueName)
49-
let table = await queuesAndStreams.getQueuesTable(5)
50-
assert.equal(1, table.length)
51-
assert.equal(table[0][0], '/')
52-
assert.equal(table[0][1], queueName)
53-
assert.equal(table[0][2], 'classic')
54-
assert.equal(table[0][4], 'running')
55-
})
56-
5744
after(async function () {
5845
await teardown(driver, this, captureScreen)
5946
})

0 commit comments

Comments
 (0)