Skip to content

Commit a665578

Browse files
Merge pull request #135 from splunk/test/new_ucc
fix: update selectors for new ucc ui
2 parents 5d6a6be + 9f6409e commit a665578

33 files changed

+1436
-326
lines changed

.circleci/config.yml

Lines changed: 81 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -18,82 +18,82 @@ commands:
1818
type: string
1919
default: latest
2020
steps:
21-
- run:
22-
name: Downloading Example-TA
23-
command: |
24-
cd tests/deps/splunk-add-on-for-ucc-example
25-
mkdir output
26-
cd output
27-
pwd
28-
curl -s https://api.github.com/repos/splunk/splunk-add-on-for-ucc-example/releases/latest | grep "Splunk_TA.*tar.gz" | grep -v search_head | grep -v indexer | grep -v forwarder | cut -d : -f 2,3 | tr -d \" | wget -qi - || true
29-
ls
30-
tar -xzf *.tar.gz
31-
ls
32-
rm *.tar.gz
33-
ls
34-
- run:
35-
name: Setup for testing
36-
command: |
37-
echo "Setup for Testing..."
38-
pip install git+https://github.com/pixelb/crudini
39-
mkdir test-results
40-
cp -r /tmp/workspace/dist dist
41-
cp -r tests/deps/splunk-add-on-for-ucc-example/output output
42-
- run:
43-
name: Splunk Testing
44-
command: |
45-
export SPLUNK_VERSION=$(crudini --get tests/deps/build/addonfactory_test_matrix_splunk/splunk_matrix.conf "<<parameters.splunk_version>>" VERSION)
46-
export SPLUNK_APP_ID=$(crudini --get tests/deps/splunk-add-on-for-ucc-example/package/default/app.conf id name)
47-
export SPLUNK_APP_PACKAGE=tests/deps/splunk-add-on-for-ucc-example/output/$(ls tests/deps/splunk-add-on-for-ucc-example/output/)
48-
export TEST_SET=tests/ui
49-
export TEST_BROWSER="<<parameters.browser>>"
50-
export TEST_SUITE="-k <<parameters.test_suite>>"
51-
export JOB_NAME="CircleCI::$CIRCLE_PROJECT_REPONAME[$CIRCLE_BRANCH][$TEST_BROWSER] #$CIRCLE_BUILD_NUM"
52-
export SAUCE_IDENTIFIER=$SAUCE_IDENTIFIER-$(cat /proc/sys/kernel/random/uuid)
53-
echo "environment setup..."
54-
echo $SPLUNK_VERSION
55-
echo $SPLUNK_APP_ID
56-
echo $SPLUNK_APP_PACKAGE
57-
echo $TEST_SET
58-
echo $TEST_BROWSER
59-
echo $TEST_SUITE
60-
echo "Testing..."
61-
docker-compose -f docker-compose-ci.yml build
21+
- run:
22+
name: Downloading Example-TA
23+
command: |
24+
cd tests/deps/splunk-add-on-for-ucc-example
25+
mkdir output
26+
cd output
27+
pwd
28+
# curl -s https://api.github.com/repos/splunk/splunk-add-on-for-ucc-example/releases/latest | grep "Splunk_TA.*tar.gz" | grep -v search_head | grep -v indexer | grep -v forwarder | cut -d : -f 2,3 | tr -d \" | wget -qi - || true
29+
ls
30+
mv ../../Splunk_TA_UCCExample-8.0.1-R56b2ace.tar.gz ./
31+
tar -xzf *.tar.gz
32+
ls
33+
rm *.tar.gz
34+
ls
35+
- run:
36+
name: Setup for testing
37+
command: |
38+
echo "Setup for Testing..."
39+
pip install git+https://github.com/pixelb/crudini
40+
mkdir test-results
41+
cp -r /tmp/workspace/dist dist
42+
cp -r tests/deps/splunk-add-on-for-ucc-example/output output
43+
- run:
44+
name: Splunk Testing
45+
command: |
46+
export SPLUNK_VERSION=$(crudini --get tests/deps/build/addonfactory_test_matrix_splunk/splunk_matrix.conf "<<parameters.splunk_version>>" VERSION)
47+
export SPLUNK_APP_ID=$(crudini --get tests/deps/splunk-add-on-for-ucc-example/package/default/app.conf id name)
48+
export SPLUNK_APP_PACKAGE=tests/deps/splunk-add-on-for-ucc-example/output/$(ls tests/deps/splunk-add-on-for-ucc-example/output/)
49+
export TEST_SET=tests/ui
50+
export TEST_BROWSER="<<parameters.browser>>"
51+
export TEST_SUITE="-k <<parameters.test_suite>>"
52+
export JOB_NAME="CircleCI::$CIRCLE_PROJECT_REPONAME[$CIRCLE_BRANCH][$TEST_BROWSER] #$CIRCLE_BUILD_NUM"
53+
export SAUCE_IDENTIFIER=$SAUCE_IDENTIFIER-$(cat /proc/sys/kernel/random/uuid)
54+
echo "environment setup..."
55+
echo $SPLUNK_VERSION
56+
echo $SPLUNK_APP_ID
57+
echo $SPLUNK_APP_PACKAGE
58+
echo $TEST_SET
59+
echo $TEST_BROWSER
60+
echo $TEST_SUITE
61+
echo "Testing..."
62+
docker-compose -f docker-compose-ci.yml build
63+
64+
# Saucelab connection
65+
docker-compose -f docker-compose-ci.yml up -d sauceconnect
6266
63-
# Saucelab connection
64-
docker-compose -f docker-compose-ci.yml up -d sauceconnect
67+
# Start Splunk
68+
docker-compose -f docker-compose-ci.yml up -d splunk
69+
until docker-compose -f docker-compose-ci.yml logs splunk | grep "Ansible playbook complete" ; do sleep 1; done
6570
66-
# Start Splunk
67-
docker-compose -f docker-compose-ci.yml up -d splunk
68-
until docker-compose -f docker-compose-ci.yml logs splunk | grep "Ansible playbook complete" ; do sleep 1; done
71+
# Normal Inspecting
72+
docker-compose -f docker-compose-ci.yml logs sauceconnect
73+
docker ps -a
6974
70-
# Normal Inspecting
71-
docker-compose -f docker-compose-ci.yml logs sauceconnect
72-
docker ps -a
75+
# Run the tests
76+
test_exit_code=0
77+
docker-compose -f docker-compose-ci.yml up --abort-on-container-exit test || test_exit_code=$?
7378
74-
# Run the tests
75-
test_exit_code=0
76-
docker-compose -f docker-compose-ci.yml up --abort-on-container-exit test || test_exit_code=$?
77-
78-
# Collect Results
79-
docker container create --name dummy \
80-
-v project_results:/home/circleci/work \
81-
registry.access.redhat.com/ubi7/ubi
82-
docker cp dummy:/home/circleci/work/test-results/test.xml test-results/ || true
83-
docker cp dummy:/home/circleci/work/assets test-results/assets || true
84-
docker cp dummy:/home/circleci/work/report.html test-results/report.html || true
85-
86-
docker-compose -f docker-compose-ci.yml down || true
87-
88-
echo exit code "$test_exit_code"
89-
exit "$test_exit_code"
79+
# Collect Results
80+
docker container create --name dummy \
81+
-v project_results:/home/circleci/work \
82+
registry.access.redhat.com/ubi7/ubi
83+
docker cp dummy:/home/circleci/work/test-results/test.xml test-results/ || true
84+
docker cp dummy:/home/circleci/work/assets test-results/assets || true
85+
docker cp dummy:/home/circleci/work/report.html test-results/report.html || true
9086
87+
docker-compose -f docker-compose-ci.yml down || true
9188
92-
- store_artifacts:
93-
path: test-results
94-
destination: test-results
95-
- store_test_results:
96-
path: test-results
89+
echo exit code "$test_exit_code"
90+
exit "$test_exit_code"
91+
92+
- store_artifacts:
93+
path: test-results
94+
destination: test-results
95+
- store_test_results:
96+
path: test-results
9797

9898
jobs:
9999
build:
@@ -167,16 +167,16 @@ jobs:
167167
- attach_workspace:
168168
at: /tmp/workspace
169169
- setup_remote_docker:
170-
docker_layer_caching: true
170+
docker_layer_caching: true
171171
- test_smartx:
172-
splunk_version: <<parameters.splunk_version>>
173-
browser: <<parameters.browser>>
174-
test_suite: <<parameters.test_suite>>
172+
splunk_version: <<parameters.splunk_version>>
173+
browser: <<parameters.browser>>
174+
test_suite: <<parameters.test_suite>>
175175

176176
semgrep:
177177
environment:
178-
SEMGREP_REPO_URL: << pipeline.project.git_url >>
179-
SEMGREP_BRANCH: << pipeline.git.branch >>
178+
SEMGREP_REPO_URL: << pipeline.project.git_url >>
179+
SEMGREP_BRANCH: << pipeline.git.branch >>
180180
docker:
181181
- image: returntocorp/semgrep-agent:v1
182182
user: root
@@ -196,13 +196,13 @@ jobs:
196196
export REPO_BRANCH=$(echo "<< pipeline.git.branch >>")
197197
DASHBOARD_URL=$(python3 -c "from urllib.parse import quote; import os; print('https://semgrep.dev/manage/findings?repo=' + quote(os.environ['SEMGREP_REPO_NAME'], safe='') + '&tab=findings&ref_type=branch&ref=' + quote(os.environ['REPO_BRANCH'], safe=''))")
198198
echo "View Result at Semgrep Dashboard: $DASHBOARD_URL"
199-
199+
200200
# Semgrep Exclude files
201201
dos2unix .semgrepignore
202202
SEMGREP_EXCLUDE=$(sed "/^#/d" .semgrepignore | sed "/^:/d" | sed -r '/^\s*$/d' | sed ':a;N;$!ba;s/\n/ --exclude /g')
203203
echo "Excluding Semgrep Files: --exclude $SEMGREP_EXCLUDE"
204204
# Generate xml file
205-
semgrep --config="p/r2c-ci" --config="p/r2c-security-audit" --config="p/bandit" --error --strict --timeout=0 --junit-xml -o /root/project/test-results/semgrep-scan.xml --exclude $SEMGREP_EXCLUDE
205+
semgrep --config="p/r2c-ci" --config="p/r2c-security-audit" --config="p/bandit" --error --strict --timeout=0 --junit-xml -o /root/project/test-results/semgrep-scan.xml --exclude $SEMGREP_EXCLUDE
206206
- store_artifacts:
207207
path: test-results
208208
destination: test-results
@@ -260,7 +260,7 @@ workflows:
260260
- build
261261
- semgrep:
262262
context:
263-
- gdi-semgrep
263+
- gdi-semgrep
264264
filters:
265265
branches:
266266
only: /.*/
@@ -274,7 +274,7 @@ workflows:
274274
parameters:
275275
splunk_version: ["8.1"]
276276
browser: ["firefox", "chrome"]
277-
test_suite:
277+
test_suite:
278278
- "test_splunk_ta_example_addon_logging"
279279
- "test_splunk_ta_example_addon_account"
280280
- "test_splunk_ta_example_addon_input"
@@ -296,4 +296,4 @@ workflows:
296296
branches:
297297
ignore: /.*/
298298
tags:
299-
only: /^v\d*\.\d*\.\d*.*$/
299+
only: /^v\d*\.\d*\.\d*.*$/

docs/example_code.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ def __init__(self, browser, container):
2727
:param browser: The selenium webdriver
2828
:param container: The container in which the entity is located in
2929
"""
30-
add_btn = Button(browser, Selector(by=By.ID, select="addInputBtn"))
31-
entity_container = Selector(select= ".modal-content")
30+
add_btn = Button(browser, Selector(by=By.ID, select='addInputBtn'))
31+
entity_container = Selector(select='[data-test="modal"]')
3232
super(ExampleTAInputEntity, self).__init__(browser, entity_container, add_btn=add_btn)
3333
# Controls
34-
self.name = TextBox(browser, Selector(select=".name"))
35-
self.interval = TextBox(browser, Selector(select=".interval"))
36-
self.index = SingleSelect(browser, Selector(select= ".index"))
37-
self.object = TextBox(browser, Selector(select=".object"))
38-
self.object_fields = TextBox(browser, Selector(select=".object_fields"))
39-
self.title = BaseComponent(browser, Selector(select= "h4.modal-title"))
40-
self.use_existing_input = Toggle(browser, Selector(select= ".use_existing_checkpoint"))
41-
self.help_link = LearnMore(browser, Selector(select=" #accountDefaultTooltip a"))
34+
self.name = TextBox(browser, Selector(select='[data-test="control-group"][data-name="name"]'))
35+
self.interval = TextBox(browser, Selector(select='[data-test="control-group"][data-name="interval"]'))
36+
self.index = SingleSelect(browser, Selector(select= '[data-test="control-group"][data-name="index"]'))
37+
self.object = TextBox(browser, Selector(select='[data-test="control-group"][data-name="object"]'))
38+
self.object_fields = TextBox(browser, Selector(select='[data-test="control-group"][data-name="object_fields"]'))
39+
self.title = BaseComponent(browser, Selector(select= '[data-test="title"]'))
40+
self.use_existing_input = Toggle(browser, Selector(select= '[data-test="control-group"][data-name="use_existing_checkpoint"]'))
41+
self.help_link = LearnMore(browser, Selector(select='[data-test="control-group"] [data-test="link"]'))
4242

4343
class ExampleTALogEntity(Entity):
4444
"""
@@ -49,16 +49,16 @@ def __init__(self, browser, container):
4949
:param browser: The selenium webdriver
5050
:param container: The container in which the entity is located in
5151
"""
52-
add_btn = Button(browser, Selector(by=By.ID, select="addInputBtn"))
53-
entity_container = Selector(select= ".modal-content")
52+
add_btn = Button(browser, Selector(by=By.ID, select='[id="addInputBtn"]'))
53+
entity_container = Selector(select='[data-test="modal"]')
5454
super(ExampleTALogEntity, self).__init__(browser, entity_container, add_btn=add_btn)
5555
# Controls
56-
self.name = TextBox(browser, Selector(select=".name"))
57-
self.interval = TextBox(browser, Selector(select=".interval"))
58-
self.index = SingleSelect(browser, Selector(select= ".index"))
59-
self.title = BaseComponent(browser, Selector(select= "h4.modal-title"))
60-
self.use_existing_input = Toggle(browser, Selector(select= ".use_existing_checkpoint"))
61-
self.help_link = LearnMore(browser, Selector(select=" #accountDefaultTooltip a"))
56+
self.name = TextBox(browser, Selector(select='[data-test="control-group"][data-name="name"]'))
57+
self.interval = TextBox(browser, Selector(select='[data-test="control-group"][data-name="interval"]'))
58+
self.index = SingleSelect(browser, Selector(select='[data-test="control-group"][data-name="index"]'))
59+
self.title = BaseComponent(browser, Selector(select='[data-test="title"]'))
60+
self.use_existing_input = Toggle(browser, Selector(select='[data-test="control-group"][data-name="use_existing_checkpoint"]'))
61+
self.help_link = LearnMore(browser, Selector(select='[data-test="control-group"] [data-test="link"]'))
6262

6363

6464
class Inputs(Page):
@@ -72,16 +72,16 @@ def __init__(self, ucc_smartx_selenium_helper=None, ucc_smartx_rest_helper=None,
7272
"""
7373
super(Inputs, self).__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True)
7474

75-
input_container = Selector(select= "div.inputsContainer")
75+
input_container = Selector(select='div[role="main"]')
7676
if ucc_smartx_selenium_helper:
77-
self.title = Message(ucc_smartx_selenium_helper.browser, Selector(by=By.CLASS_NAME, select="tool-title"))
78-
self.description = Message(ucc_smartx_selenium_helper.browser, Selector(by=By.CLASS_NAME, select="tool-description"))
77+
self.title = Message(ucc_smartx_selenium_helper.browser, Selector(select='[data-test="column"] .pageTitle'))
78+
self.description = Message(ucc_smartx_selenium_helper.browser, Selector(select='[data-test="column"] .pageSubtitle'))
7979
self.table = InputTable(ucc_smartx_selenium_helper.browser, input_container, mapping={"account_name": "account", "status": "disabled"})
80-
self.create_new_input = Dropdown(ucc_smartx_selenium_helper.browser, Selector(select=".add-button"))
80+
self.create_new_input = Dropdown(ucc_smartx_selenium_helper.browser, Selector(by=By.ID, select='addInputBtn'))
8181
self.ExampleTALogEntity = ExampleTALogEntity(ucc_smartx_selenium_helper.browser, input_container)
8282
self.ExampleTAInputEntity = ExampleTAInputEntity(ucc_smartx_selenium_helper.browser, input_container)
83-
self.pagination = Dropdown(ucc_smartx_selenium_helper.browser, Selector(select="control btn-group shared-controls-syntheticselectcontrol control-default"))
84-
self.type_filter = Dropdown(ucc_smartx_selenium_helper.browser, Selector(select=" .type-filter"))
83+
self.pagination = Dropdown(ucc_smartx_selenium_helper.browser, Selector(select='.dropdownPage')) # Selector for dropdown for selecting number of records shown in a single page
84+
self.type_filter = Dropdown(ucc_smartx_selenium_helper.browser, Selector(select='.dropdownInput')) # Selector for dropdown for showing records of perticular input type.
8585
self.message_tray = MessageTray(ucc_smartx_selenium_helper.browser)
8686

8787
if ucc_smartx_rest_helper:

pytest_splunk_addon_ui_smartx/alert_actions/__init__.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
from ..backend_confs import SingleBackendConf
99
from ..components.entity import Entity
10-
from ..components.base_component import Selector
10+
from .components.alert_base_component import Selector
1111

1212
from .components.button import Button
13-
from .components.textbox import TextBox
13+
from .components.textbox import AlertTextBox
1414
from .components.searchbox import SearchBox
1515
from .components.dropdown import ActionDropdown
1616

@@ -32,8 +32,8 @@ def __init__(self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper):
3232
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
3333

3434
# Controls
35-
self.name = TextBox(ucc_smartx_selenium_helper.browser, Selector(select="div[data-name=name]"))
36-
self.description = TextBox(ucc_smartx_selenium_helper.browser, Selector(select="div[data-name=description]"))
35+
self.name = AlertTextBox(ucc_smartx_selenium_helper.browser, Selector(select="div[data-name=name]"))
36+
self.description = AlertTextBox(ucc_smartx_selenium_helper.browser, Selector(select="div[data-name=description]"))
3737
self.search = SearchBox(ucc_smartx_selenium_helper.browser, Selector(select=".search-bar-input"))
3838
self.add_action_dropdown = ActionDropdown(ucc_smartx_selenium_helper.browser, Selector(select=".add-action-btn"))
3939
self.add_alert = Button(ucc_smartx_selenium_helper.browser, Selector(select=".new-alert-button"))

0 commit comments

Comments
 (0)