Repository navigation
Expand file tree
/
Copy pathpoints.yml
More file actions
211 lines (168 loc) · 8.89 KB
/
Copy pathpoints.yml
File metadata and controls
211 lines (168 loc) · 8.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
# ============================================================
# Selenium Assignment - Self Assessment
# ============================================================
# Fill in your details and mark completed tasks.
# - For "once" tasks: set to true/false
# - For "repeatable" tasks: set the number of times you did it
# (the CI will enforce the maximum, no need to worry about it)
# ============================================================
student:
website_under_test: "https://elteseleniumtesting.moodlecloud.com/login/index.php"
# ----------------------------------------------------------
# AI usage (optional but appreciated)
# ----------------------------------------------------------
# If you used any AI tools (ChatGPT, Claude, Copilot, etc.)
# while working on this assignment, briefly describe how.
# This has no effect on your grade.
# ----------------------------------------------------------
ai_usage:
used: true
tools: "GitHub Copilot, Gemini" # e.g. "Claude, GitHub Copilot"
description: "Copilot was used for autocomplete when writing test methods. Gemini was used to help implement advanced tasks."
# ----------------------------------------------------------
# Quality requirements (gatekeepers)
# ----------------------------------------------------------
# These are not worth points, but they cap your maximum grade.
# Set each to true when you are confident it applies.
# ----------------------------------------------------------
quality:
gitignore: # required for grade 2+
done: true
description: "Unnecessary files are ignored (.gitignore covers build output, IDE files, etc.)"
structured_code: # required for grade 3+
done: true
description: "Code is organized into classes and functions, not one big file"
readable_code: # required for grade 4+
done: true
description: "Function and method names describe what they do, test suite reads like a test description"
low_redundancy: # required for grade 5
done: true
description: "Minimal code duplication, shared logic is extracted into reusable methods"
# ----------------------------------------------------------
# Basic tasks (B)
# ----------------------------------------------------------
basic:
login_form: # 3 pts | once
done: true
description: "Fill a simple form and submit it (e.g. login with username and password)"
form_with_user: # 3 pts | once
done: true
description: "Submit a form that requires a registered/logged-in user"
logout: # 2 pts | once
done: true
description: "Log out from the application and verify it"
fill_input: # 1 pt each | repeatable | max 10
count: 3
description: "Fill an input field (text, radio, checkbox, date, etc.) — each different type counts as one"
send_form: # 1 pt each | repeatable | max 10
count: 1
description: "Submit a form (each distinct form counts as one)"
static_page_test: # 2 pts | once
done: true
description: "Test a static page (verify text content, element presence, etc.)"
multiple_page_test: # 3 pts | once
done: true
description: "Define an array of URLs or page data, iterate over them and verify something on each page (e.g. check title or a specific element on 5 different pages using a loop)"
complex_xpath: # 1 pt each | repeatable | max 10
count: 0
description: "Use a complex XPath expression (e.g. //div[@class='content']//a[contains(@href,'profile')])"
textarea: # 1 pt | once
done: false
description: "Fill or read the content of a textarea element"
dropdown: # 2 pts | once
done: true
description: "Select an option from a drop-down (using Select class or similar)"
link: "https://www.selenium.dev/documentation/webdriver/support_features/select_lists/"
radio_button: # 1 pt | once
done: false
description: "Select or verify a radio button"
at_least_4_classes: # 3 pts | once
done: true
description: "Project has at least 4 Java classes"
at_least_6_classes: # 3 pts | once
done: true
description: "Project has at least 6 Java classes (cumulative with above)"
at_least_8_classes: # 3 pts | once
done: true
description: "Project has at least 8 Java classes (cumulative with above)"
explicit_wait: # 3 pts | once
done: true
description: "Use explicit wait (WebDriverWait with ExpectedConditions)"
link: "https://www.selenium.dev/documentation/webdriver/waits/"
page_title: # 1 pt | once
done: true
description: "Read and verify the page title using getTitle()"
page_object_pattern: # 3 pts | once
done: true
description: "Use Page Object pattern with at least 2 page classes"
link: "https://www.selenium.dev/documentation/test_practices/encouraged/page_object_models/"
base_page_class: # 1 pt | once
done: true
description: "Create a BasePage class that other page classes extend"
readable_tests: # 3 pts | once
done: true
description: "Test methods have descriptive names so the suite reads like a test specification"
# ----------------------------------------------------------
# Advanced tasks (A)
# ----------------------------------------------------------
advanced:
webdriver_config: # 4 pts | once
done: true
description: "Configure WebDriver with custom options (e.g. ChromeOptions, window size, user agent)"
link: "https://www.selenium.dev/documentation/webdriver/drivers/options/"
cookie_manipulation: # 6 pts | once
done: true
description: "Manipulate cookies meaningfully (e.g. add/delete/read cookies, skip consent popup)"
link: "https://www.selenium.dev/documentation/webdriver/interactions/cookies/"
hover_test: # 6 pts | once
done: false
description: "Perform a hover (mouse over) action and verify the result"
link: "https://www.selenium.dev/documentation/webdriver/actions_api/mouse/"
drag_and_drop: # 8 pts | once
done: false
description: "Drag and drop an element to another location"
link: "https://www.selenium.dev/documentation/webdriver/actions_api/mouse/"
file_upload: # 6 pts | once
done: false
description: "Upload a file through a file input and verify it was uploaded"
link: "https://www.selenium.dev/documentation/webdriver/elements/file_upload/"
history_test: # 4 pts | once
done: true
description: "Test browser history navigation (e.g. back(), forward())"
link: "https://www.selenium.dev/documentation/webdriver/interactions/navigation/"
test_dependencies: # 4 pts | once
done: true
description: "Make a test method depend on another using dependsOnMethods or dependsOnGroups — e.g. a logout test that only runs if login passed"
link: "https://testng.org/#_test_methods_classes_and_groups"
email_checking: # 16 pts | once
done: false
description: "Verify an e-mail was sent (e.g. registration activation link, password reset)"
random_data: # 8 pts | once
done: true
description: "Generate random test data (e.g. random username, email) and use it in a test"
download_files: # 12 pts | once
done: false
description: "Download one or more files to a folder and verify they were saved"
config_file: # 6 pts | once
done: true
description: "Store test settings in an external file (e.g. .properties, .yml, or .env) and read them at runtime — things like base URL, username, password, browser type. No hardcoded values in your test code"
javascript_executor: # 4 pts | once
done: false
description: "Use JavascriptExecutor to perform an action (e.g. scroll, click hidden element)"
link: "https://www.selenium.dev/selenium/docs/api/java/org/openqa/selenium/JavascriptExecutor.html"
screenshot_on_failure: # 6 pts | once
done: true
description: "Automatically take a screenshot when a test fails (e.g. using a TestNG ITestListener)"
link: "https://www.browserstack.com/guide/take-screenshots-in-selenium"
headless_execution: # 4 pts | once
done: true
description: "Run tests in headless mode (browser without visible UI)"
link: "https://www.selenium.dev/documentation/webdriver/browsers/chrome/"
cross_browser_testing: # 8 pts | once
done: false
description: "Run the same tests on multiple browsers (e.g. Chrome and Firefox) using parameterization"
link: "https://www.selenium.dev/documentation/webdriver/browsers/"
dockerized_execution: # 4 pts | once
done: true
description: "Run tests inside a Docker container (e.g. using docker-compose with Selenium Grid)"
link: "https://www.selenium.dev/documentation/grid/getting_started/"