@anddone/adminportaltestautomation 1.3.4 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish-adminportal.yml +127 -0
- package/.github/workflows/release-adminportal.yml +78 -0
- package/dist/pages/AdminPaymentPage.d.ts.map +1 -1
- package/dist/pages/AdminPaymentPage.js +6 -0
- package/dist/pages/AdminPaymentPage.js.map +1 -1
- package/package.json +1 -1
- package/src/pages/AdminPaymentPage.ts +8 -0
- package/tests/login.spec.ts +5 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
name: Publish AdminPortalTestAutomation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
confirm:
|
|
7
|
+
description: "Type YES to confirm npm publish"
|
|
8
|
+
required: true
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
issues: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
publish:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
with:
|
|
21
|
+
fetch-depth: 0
|
|
22
|
+
|
|
23
|
+
- uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: 18
|
|
26
|
+
registry-url: https://registry.npmjs.org/
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: npm install
|
|
30
|
+
|
|
31
|
+
- name: Confirm intent
|
|
32
|
+
run: |
|
|
33
|
+
if [ "${{ github.event.inputs.confirm }}" != "YES" ]; then
|
|
34
|
+
echo "Confirmation missing. Type YES to proceed."
|
|
35
|
+
exit 1
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
# Create approval request (GitHub Issue)
|
|
39
|
+
- name: Create approval issue
|
|
40
|
+
id: approval_issue
|
|
41
|
+
uses: actions/github-script@v7
|
|
42
|
+
with:
|
|
43
|
+
script: |
|
|
44
|
+
const { data: issue } = await github.rest.issues.create({
|
|
45
|
+
owner: context.repo.owner,
|
|
46
|
+
repo: context.repo.repo,
|
|
47
|
+
title: "Approval required: Publish AdminPortalTestAutomation",
|
|
48
|
+
body: `
|
|
49
|
+
🚦 Approval required for npm publish
|
|
50
|
+
|
|
51
|
+
Package: @anddone/adminportaltestautomation
|
|
52
|
+
Run ID: ${context.runId}
|
|
53
|
+
|
|
54
|
+
Approvers: @ad-amolpatil @Rushabh Gunjal @ad-siddheshwaranajekar @ad-dbharathidasan @manjusha-mane
|
|
55
|
+
Please comment **APPROVE** on this issue to proceed.
|
|
56
|
+
`
|
|
57
|
+
});
|
|
58
|
+
core.setOutput("issue_number", issue.number);
|
|
59
|
+
|
|
60
|
+
# Wait for approval comment from approvers
|
|
61
|
+
- name: Wait for approval
|
|
62
|
+
uses: actions/github-script@v7
|
|
63
|
+
with:
|
|
64
|
+
script: |
|
|
65
|
+
const owner = context.repo.owner;
|
|
66
|
+
const repo = context.repo.repo;
|
|
67
|
+
const issue_number = Number('${{ steps.approval_issue.outputs.issue_number }}');
|
|
68
|
+
|
|
69
|
+
const APPROVERS = ['ad-amolpatil', 'ad-rushabhGunjal' , 'ad-siddheshwaranajekar' , 'ad-dbharathidasan' , 'manjusha-mane ' ]; // add GitHub usernames
|
|
70
|
+
const TIMEOUT_MINUTES = 60;
|
|
71
|
+
const start = Date.now();
|
|
72
|
+
|
|
73
|
+
core.info(`Waiting for approval on issue #${issue_number}...`);
|
|
74
|
+
|
|
75
|
+
while (true) {
|
|
76
|
+
const { data: comments } = await github.rest.issues.listComments({
|
|
77
|
+
owner,
|
|
78
|
+
repo,
|
|
79
|
+
issue_number,
|
|
80
|
+
per_page: 100,
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const approved = comments.some(c =>
|
|
84
|
+
APPROVERS.includes(c.user.login) &&
|
|
85
|
+
c.body.trim().toUpperCase() === 'APPROVE'
|
|
86
|
+
);
|
|
87
|
+
|
|
88
|
+
if (approved) {
|
|
89
|
+
core.info('Approval received. Proceeding to publish...');
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
if ((Date.now() - start) / 60000 > TIMEOUT_MINUTES) {
|
|
94
|
+
core.setFailed('Timed out waiting for approval.');
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
await new Promise(res => setTimeout(res, 30000)); // poll every 30 seconds
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
# Publish to npm (runs only after approval)
|
|
102
|
+
- name: Publish to npm
|
|
103
|
+
run: npm publish --access public
|
|
104
|
+
env:
|
|
105
|
+
NODE_AUTH_TOKEN: ${{ secrets.TestAutomationAuth }}
|
|
106
|
+
|
|
107
|
+
# Slack Success
|
|
108
|
+
- name: Slack Success
|
|
109
|
+
if: success()
|
|
110
|
+
run: |
|
|
111
|
+
PACKAGE_NAME="@anddone/adminportaltestautomation"
|
|
112
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
113
|
+
|
|
114
|
+
curl -X POST -H 'Content-type: application/json' \
|
|
115
|
+
--data "{
|
|
116
|
+
\"username\": \"AdminPortalTestAutomation\",
|
|
117
|
+
\"text\": \":white_check_mark: *npm publish successful!*\n\n*Package:* $PACKAGE_NAME\n*Version:* $VERSION\"
|
|
118
|
+
}" \
|
|
119
|
+
${{ secrets.SLACK_URL }}
|
|
120
|
+
|
|
121
|
+
# Slack Failure
|
|
122
|
+
- name: Slack Failure
|
|
123
|
+
if: failure()
|
|
124
|
+
run: |
|
|
125
|
+
curl -X POST -H 'Content-type: application/json' \
|
|
126
|
+
--data '{\"text\":\":x: npm publish failed. Check GitHub Actions logs.\"}' \
|
|
127
|
+
${{ secrets.SLACK_URL }}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: Release AdminPortalTestAutomation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
release_type:
|
|
7
|
+
description: "Release type (semantic versioning)"
|
|
8
|
+
required: true
|
|
9
|
+
default: patch
|
|
10
|
+
type: choice
|
|
11
|
+
options:
|
|
12
|
+
- patch
|
|
13
|
+
- minor
|
|
14
|
+
- major
|
|
15
|
+
|
|
16
|
+
jobs:
|
|
17
|
+
release:
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
# 1. Checkout repo
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
with:
|
|
24
|
+
fetch-depth: 0
|
|
25
|
+
|
|
26
|
+
# 2. Setup Node
|
|
27
|
+
- uses: actions/setup-node@v4
|
|
28
|
+
with:
|
|
29
|
+
node-version: 18
|
|
30
|
+
registry-url: https://registry.npmjs.org/
|
|
31
|
+
|
|
32
|
+
# 3. Install dependencies
|
|
33
|
+
- run: npm install
|
|
34
|
+
|
|
35
|
+
# 4. Build project
|
|
36
|
+
- run: npm run build
|
|
37
|
+
|
|
38
|
+
# 5. Configure Git for tags/commits
|
|
39
|
+
- name: Configure Git
|
|
40
|
+
run: |
|
|
41
|
+
git config user.name "github-actions[bot]"
|
|
42
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
43
|
+
|
|
44
|
+
# 6. Bump version safely
|
|
45
|
+
- name: Bump version
|
|
46
|
+
run: |
|
|
47
|
+
RELEASE_TYPE=${{ inputs.release_type }}
|
|
48
|
+
CURRENT_VERSION=$(node -p "require('./package.json').version")
|
|
49
|
+
NEW_VERSION=$(npm version $RELEASE_TYPE --no-git-tag-version)
|
|
50
|
+
|
|
51
|
+
echo "Current version: $CURRENT_VERSION"
|
|
52
|
+
echo "New version: $NEW_VERSION"
|
|
53
|
+
|
|
54
|
+
git add package.json
|
|
55
|
+
git commit -m "chore(release): $NEW_VERSION"
|
|
56
|
+
|
|
57
|
+
if git rev-parse "v$NEW_VERSION" >/dev/null 2>&1; then
|
|
58
|
+
git tag -d "v$NEW_VERSION"
|
|
59
|
+
git push origin :refs/tags/v$NEW_VERSION
|
|
60
|
+
fi
|
|
61
|
+
|
|
62
|
+
git tag "v$NEW_VERSION"
|
|
63
|
+
git push origin master --follow-tags
|
|
64
|
+
|
|
65
|
+
# 7. Slack Approval Request (Notify Approvers)
|
|
66
|
+
- name: Notify approvers for publish approval
|
|
67
|
+
if: success()
|
|
68
|
+
run: |
|
|
69
|
+
PACKAGE_NAME="@anddone/adminportaltestautomation"
|
|
70
|
+
VERSION=$(node -p "require('./package.json').version")
|
|
71
|
+
PUBLISH_URL="https://github.com/${{ github.repository }}/actions/workflows/publish-adminportal.yml"
|
|
72
|
+
|
|
73
|
+
curl -X POST -H 'Content-type: application/json' \
|
|
74
|
+
--data "{
|
|
75
|
+
\"username\": \"AdminPortalTestAutomation\",
|
|
76
|
+
\"text\": \":bell: *Release ready for approval*\n\n*Package:* $PACKAGE_NAME\n*Version:* $VERSION\n\nApprovers: please trigger publish here:\n$PUBLISH_URL\"
|
|
77
|
+
}" \
|
|
78
|
+
${{ secrets.SLACK_URL }}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPaymentPage.d.ts","sourceRoot":"","sources":["../../src/pages/AdminPaymentPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAU,MAAM,kBAAkB,CAAC;AAEzD,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;gBAE/B,IAAI,EAAE,IAAI;IA4CtB;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9C;;OAEG;IACG,wBAAwB;IAI9B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM;IAI1C;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlD;;OAEG;IACG,4BAA4B;IAIlC;;;OAGG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM;IAKlC;;OAEG;IACG,WAAW;IAIjB;;OAEG;IACG,eAAe;IAIrB;;OAEG;IACG,2BAA2B;IAKjC;;;OAGG;IACG,kCAAkC,CAAC,iBAAiB,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"AdminPaymentPage.d.ts","sourceRoot":"","sources":["../../src/pages/AdminPaymentPage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAU,MAAM,kBAAkB,CAAC;AAEzD,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;gBAE/B,IAAI,EAAE,IAAI;IA4CtB;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9C;;OAEG;IACG,wBAAwB;IAI9B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC;;OAEG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM;IAI1C;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlD;;OAEG;IACG,4BAA4B;IAIlC;;;OAGG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM;IAKlC;;OAEG;IACG,WAAW;IAIjB;;OAEG;IACG,eAAe;IAIrB;;OAEG;IACG,2BAA2B;IAKjC;;;OAGG;IACG,kCAAkC,CAAC,iBAAiB,EAAE,MAAM;IAyDlE;;OAEG;IACG,aAAa;IAQnB;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI/C;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,6BAA6B;IAQnC;;;OAGG;IACG,4CAA4C,IAAI,OAAO,CAC3D,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CACpB;IA8CD;;OAEG;IACG,kCAAkC;IAIxC;;;OAGG;IACG,6BAA6B,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMtE;;;;OAIG;IACG,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMxE;;OAEG;IACG,uBAAuB;CAQ9B"}
|
|
@@ -92,6 +92,12 @@ class AdminPaymentPage {
|
|
|
92
92
|
* @param merchantReference - Merchant reference to search for
|
|
93
93
|
*/
|
|
94
94
|
async searchAndSelectMerchantByReference(merchantReference) {
|
|
95
|
+
// Wait for loader to disappear
|
|
96
|
+
await this.loaderImage
|
|
97
|
+
.waitFor({ state: "hidden", timeout: 15000 })
|
|
98
|
+
.catch(() => {
|
|
99
|
+
console.log("Loader did not appear or already disappeared");
|
|
100
|
+
});
|
|
95
101
|
// Enter merchant reference in search textbox
|
|
96
102
|
await this.searchTextbox.fill(merchantReference);
|
|
97
103
|
await this.page.keyboard.press("Enter");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminPaymentPage.js","sourceRoot":"","sources":["../../src/pages/AdminPaymentPage.ts"],"names":[],"mappings":";;;AAAA,2CAAyD;AAEzD,MAAa,gBAAgB;IAW3B,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,qBAAqB;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAC3B,gDAAgD,CACjD,CAAC;QAEF,iEAAiE;QACjE,IAAI,CAAC,aAAa,GAAG,IAAI;aACtB,OAAO,CACN,+EAA+E,CAChF;aACA,KAAK,EAAE,CAAC;QAEX,uBAAuB;QACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAC7B,mEAAmE,CACpE,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAElE,oCAAoC;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAC5B,kDAAkD,CACnD,CAAC;QAEF,6BAA6B;QAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CACrC,0CAA0C,CAC3C,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAC1C,sIAAsI,CACvI,CAAC;QAEF,kCAAkC;QAClC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAC1C,oIAAoI,CACrI,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC5B,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,YAAoB;QACxC,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,wBAAwB;QAC5B,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,4BAA4B;QAChC,MAAM,IAAA,aAAM,EAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,UAAkB;QAChC,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B;QAC/B,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kCAAkC,CAAC,iBAAyB;
|
|
1
|
+
{"version":3,"file":"AdminPaymentPage.js","sourceRoot":"","sources":["../../src/pages/AdminPaymentPage.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -133,6 +133,14 @@ export class AdminPaymentPage {
|
|
|
133
133
|
* @param merchantReference - Merchant reference to search for
|
|
134
134
|
*/
|
|
135
135
|
async searchAndSelectMerchantByReference(merchantReference: string) {
|
|
136
|
+
// Wait for loader to disappear
|
|
137
|
+
await this.loaderImage
|
|
138
|
+
.waitFor({ state: "hidden", timeout: 15000 })
|
|
139
|
+
.catch(() => {
|
|
140
|
+
console.log("Loader did not appear or already disappeared");
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
|
|
136
144
|
// Enter merchant reference in search textbox
|
|
137
145
|
await this.searchTextbox.fill(merchantReference);
|
|
138
146
|
await this.page.keyboard.press("Enter");
|
package/tests/login.spec.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { test, expect } from "@playwright/test";
|
|
|
2
2
|
import { AdminLoginPage } from "../src/pages/AdminLoginPage";
|
|
3
3
|
import { AdminHomePage } from "../src/pages/AdminHomePage";
|
|
4
4
|
import { AdminPaymentPage } from "../src/pages/AdminPaymentPage";
|
|
5
|
+
import { assert } from "node:console";
|
|
5
6
|
|
|
6
7
|
test.describe("AdminPortal Login Tests", () => {
|
|
7
8
|
test("should verify payment details and fetch transaction details", async ({
|
|
@@ -24,7 +25,7 @@ test.describe("AdminPortal Login Tests", () => {
|
|
|
24
25
|
const paymentPage = new AdminPaymentPage(page);
|
|
25
26
|
await paymentPage.waitForPageLoad();
|
|
26
27
|
|
|
27
|
-
const merchantReference = "
|
|
28
|
+
const merchantReference = "d1417241-494c-451e-b153-fbc2b0a6539e"; // Replace with actual merchant reference
|
|
28
29
|
await paymentPage.searchAndSelectMerchantByReference(merchantReference);
|
|
29
30
|
|
|
30
31
|
// Verify Payment Details page and get transaction details as Map
|
|
@@ -44,6 +45,9 @@ test.describe("AdminPortal Login Tests", () => {
|
|
|
44
45
|
await paymentPage.getTransactionDetailsAsObject();
|
|
45
46
|
console.log("Transaction Details Object:", transactionDetailsObject);
|
|
46
47
|
|
|
48
|
+
|
|
49
|
+
assert(transactionDetailsObject["Merchant Reference"] === merchantReference, "Merchant Reference does not match expected value");
|
|
50
|
+
|
|
47
51
|
// Get specific detail by label
|
|
48
52
|
// const specificValue = await paymentPage.getTransactionDetailByLabel('Merchant Reference');
|
|
49
53
|
// console.log('Merchant Reference:', specificValue);
|