RBAC UI Automation Enhancement
Budget: $25 – $50 CAD
I have an established Selenium-Java-Cucumber test suite that already drives several functional areas of our web application. The next gap is Role-Based Access Control. I now need the framework expanded—cleanly and maintainably—to cover permission-validation scenarios for the Admin, User, and Guest roles.
Scope
• Build out the utility classes required to automate RBAC checks without disturbing existing modules.
• Source test data from a JSON file (structure is flexible; I’ll share an initial sample) so new roles or permissions can be plugged in by simply updating data, not code.
• Execute exclusively in Chrome for now, yet design the abstraction layers so we can add other browsers later with minimal rework.
• Keep everything aligned with current project standards—Maven layout, Junit Runner, Cucumber BDD format, and existing reporting pipeline.
Acceptance Criteria
– Feature files clearly describe each Admin, User, and Guest permission rule.
– Step definitions are reusable, follow SOLID principles, and compile cleanly with our existing suite.
– Tests run headless and in UI mode, passing on the first try from the CI job I’ll provide.
– README update that documents how to add new roles/permissions through the JSON config.
Note:
Most of the page classes are developed and created records on those pages are also been developed.
Should follow:
JSON → (choose privilege block) → pages → reflection instantiate page object → run action executors
json:
1.testsCases:
{
"testCase":[
{
"testId": "TC-01",
"roledId": "Id01"
}
]
}
2. roles definations:
{
"roles": [
{
"roleId": "Id01",
"enabled": true,
"entityAccess": [
{ "entityId": "entityOne", "permission": "Read" },
{ "entityId": "entityTwo", "permission": "Write" },
{ "entityId": "entityThree", "permission": "None" }
// there will 30+ entities in the system
]
}
]
}
3.entityPageMapper
{
"entityPagesMapping":[
{
"entityId":"entityOne",
"read":{
"pages":[
{
"pageId":"PageOne",
"enabled":"true",
"comment":"comment goes here",
"actions":{
"Create":{
"enable":"true",
"supported":"false",
"errorMsg":"error msg"
},
"Delete":{
"enable":"true",
"supported":"false",
"errorMsg":"error msg"
}
}
},
{
"pageId":"PageTwo",
"comment":"comment",
"actions":{
"Create":{
"enable":"true",
"supported":"false",
"errorMsg":"error msg"
}
}
}
]
},
"write":{
"pages":[
{
"pageId":"PageOne",
"comment":"comment goes here",
"actions":{
"Create":{
"enable":"true",
"supported":"true",
"errorMsg":"error msg"
},
"Delete":{
"enable":"true",
"supported":"true",
"errorMsg":"error msg"
}
}
},
{
"pageId":"PageTwo",
"comment":"comment",
"actions":{
"Create":{
"enable":"true",
"supported":"true",
"errorMsg":"error msg goes here"
}
}
}
]
}
}
]
4.{
"actions": [
{ "key": "create", "enabled": true },
//will have multiple action which supported on UI through automation
]
}
5.
{
"permissions": [
{ "identifier": "read", "name": "read", "enabled": true, "action": "assert" },
{ "identifier": "write", "name": "write", "enabled": true, "action": "process" },
{ "identifier": "none", "name": "none", "enabled": true, "action": "asset" }
]
}
If you’ve extended mature frameworks before and can show me lean, well-named code, let’s get this RBAC layer shipped.
Scope
• Build out the utility classes required to automate RBAC checks without disturbing existing modules.
• Source test data from a JSON file (structure is flexible; I’ll share an initial sample) so new roles or permissions can be plugged in by simply updating data, not code.
• Execute exclusively in Chrome for now, yet design the abstraction layers so we can add other browsers later with minimal rework.
• Keep everything aligned with current project standards—Maven layout, Junit Runner, Cucumber BDD format, and existing reporting pipeline.
Acceptance Criteria
– Feature files clearly describe each Admin, User, and Guest permission rule.
– Step definitions are reusable, follow SOLID principles, and compile cleanly with our existing suite.
– Tests run headless and in UI mode, passing on the first try from the CI job I’ll provide.
– README update that documents how to add new roles/permissions through the JSON config.
Note:
Most of the page classes are developed and created records on those pages are also been developed.
Should follow:
JSON → (choose privilege block) → pages → reflection instantiate page object → run action executors
json:
1.testsCases:
{
"testCase":[
{
"testId": "TC-01",
"roledId": "Id01"
}
]
}
2. roles definations:
{
"roles": [
{
"roleId": "Id01",
"enabled": true,
"entityAccess": [
{ "entityId": "entityOne", "permission": "Read" },
{ "entityId": "entityTwo", "permission": "Write" },
{ "entityId": "entityThree", "permission": "None" }
// there will 30+ entities in the system
]
}
]
}
3.entityPageMapper
{
"entityPagesMapping":[
{
"entityId":"entityOne",
"read":{
"pages":[
{
"pageId":"PageOne",
"enabled":"true",
"comment":"comment goes here",
"actions":{
"Create":{
"enable":"true",
"supported":"false",
"errorMsg":"error msg"
},
"Delete":{
"enable":"true",
"supported":"false",
"errorMsg":"error msg"
}
}
},
{
"pageId":"PageTwo",
"comment":"comment",
"actions":{
"Create":{
"enable":"true",
"supported":"false",
"errorMsg":"error msg"
}
}
}
]
},
"write":{
"pages":[
{
"pageId":"PageOne",
"comment":"comment goes here",
"actions":{
"Create":{
"enable":"true",
"supported":"true",
"errorMsg":"error msg"
},
"Delete":{
"enable":"true",
"supported":"true",
"errorMsg":"error msg"
}
}
},
{
"pageId":"PageTwo",
"comment":"comment",
"actions":{
"Create":{
"enable":"true",
"supported":"true",
"errorMsg":"error msg goes here"
}
}
}
]
}
}
]
4.{
"actions": [
{ "key": "create", "enabled": true },
//will have multiple action which supported on UI through automation
]
}
5.
{
"permissions": [
{ "identifier": "read", "name": "read", "enabled": true, "action": "assert" },
{ "identifier": "write", "name": "write", "enabled": true, "action": "process" },
{ "identifier": "none", "name": "none", "enabled": true, "action": "asset" }
]
}
If you’ve extended mature frameworks before and can show me lean, well-named code, let’s get this RBAC layer shipped.