Viettel Academy B2B licensing — beta verification (real Chrome)

Skill Pixel Chrome profile · Google sign-in · Codex computer-use · viettel.beta / mekong.beta / beta.skillpixel.vn · generated 2026-08-25 16:54 +07

RELEASED Status as of 9 Sep 2026

SP-629 Viettel Academy B2B course licensing merged 2026-08-25 (PR #311) and released to production in v0.0.40 (2026-08-30). Later console follow-ups (#424) shipped in v0.0.47 (2026-09-09).

Status checked 2026-09-09 against git tags and Jira. Index of all reports: https://skillpixel.atlassian.net/wiki/x/A4BJCw

9passed
0warnings
0failed
9steps

Walkthrough summary

# Beta browser verification — real Chrome (Skill Pixel profile, Google sign-in as skillpixeldeveloper@gmail.com), driven by Codex computer-use

- Pass: 9
- Warn: 0
- Fail: 0
- Total: 9

## Notes
- Steps 01 and 05 were first marked fail because header images were blank in the full-page captures; the DOM checks in the same run confirmed the images loaded and rendered, and the headless capture shows them. Treated as a capture artifact.
- Step 08: the free licensed course uses the cart's zero-cost checkout ('Thêm vào Giỏ hàng'), which is the designed enrolment path.
- sessionStorage.clear() was not available in the Chrome sandbox; hard refreshes were used instead.

Fixes applied during verification and final gates

Deployment: PR #311 (SP-629) squash-merged to main as 1268457e. Beta backend (Cloud Run lms-backend-beta) deployed by GitHub Actions run 32828877783 with migration c5d8a3e17f24; beta frontend DigitalOcean deployment 6082e743 ACTIVE.
Provisioning: tenants Viettel Academy (viettel.beta.skillpixel.vn, licensor, b2b_licensing on) and Mekong Energy Academy (mekong.beta.skillpixel.vn, partner); both ACTIVE with full entitlement sets; skillpixeldeveloper@gmail.com and skillpixelad@gmail.com hold TENANT_ADMIN + INSTRUCTOR + STUDENT on both. DNS: DNS-only CNAMEs in Cloudflare → DigitalOcean ALIAS domains with issued certificates.

API smoke (real product endpoints, minted Firebase sessions):
- course "An toàn thông tin cho người lao động" created on Viettel with 1 chapter / 2 reading lessons, published, enrollment OPEN
- contract HD-2026-MKE-001 (Mekong, 120.000.000 ₫, 50 seats), payment 60.000.000 ₫ UNC-2026-0412
- licence issued → copy materialised in Mekong (cost 0, PUBLISHED, chapters + lessons cloned, licensed_from = Viettel Academy)
- overview: 1 partner / 1 active contract / 1 licence / contracted 120M / collected 60M / outstanding 60M
- licensee view for skillpixelad: licensor + contract + licensed course
- content lock: PUT course and POST chapter on the copy as partner admin → 403 "This course is licensed content and cannot be edited"

Browser pass: headless Chromium (host-resolver rules to the DigitalOcean edge IP because this Mac's resolver still cached the pre-DNS NXDOMAIN), authenticated via a minted Firebase session for skillpixeldeveloper@gmail.com.

Steps

  1. 01 Viettel Academy landing PASS
  2. 02 Viettel B2B overview PASS
  3. 03 Viettel B2B partners PASS
  4. 04 Contract HD-2026-MKE-001 detail PASS
  5. 05 Mekong Energy Academy landing PASS
  6. 06 Mekong licensed content PASS
  7. 07 Licensed course read-only instructor view PASS
  8. 08 Mekong learner course page PASS
  9. 09 Default SkillPixel admin sidebar PASS

01 Viettel Academy landing PASS

https://viettel.beta.skillpixel.vn/

HTTPS loaded directly with no TLS warning. The page title is 'Viettel Academy - Nền tảng học tập'. The header references /images/viettel-academy/logo.png (170 x 55 natural pixels, rendered 98.90625 x 32) with alt text 'Viettel Academy', but the red wordmark is not visible in the captured header. The underlying tab favicon is a red Viettel V mark. The page uses Viettel red branding. The catalogue card is 'An toàn thông tin cho người lao động' and shows a struck-through 1.290.000 ₫ price plus the current 990.000 ₫ price. (Reviewer note: capture artifact — Codex's full-page capture blanks header images; its own DOM check found the logo loaded at 170×55 and rendered 99×32, and the headless Chromium capture shows the wordmark in the header. Not a defect.)

Issues
  • The supported Chrome page sandbox did not expose sessionStorage, so sessionStorage.clear() could not be completed. A Cmd+Shift+R hard refresh was completed.

02 Viettel B2B overview PASS

https://viettel.beta.skillpixel.vn/admin/b2b

Signed in with Google as skillpixeldeveloper@gmail.com. The sidebar has the 'Cấp phép B2B' group with Tổng quan, Đối tác, and Hợp đồng. Overview values are: 1 partner (1 active, 0 pending), 1 active contract, 1 licensed course, 120.000.000 ₫ contract value, 60.000.000 ₫ collected, and 60.000.000 ₫ outstanding. The monthly chart has an orange 'B2B đã thu' bar at 'thg 6 26' reaching 60M.

03 Viettel B2B partners PASS

https://viettel.beta.skillpixel.vn/admin/b2b/partners

The Mekong Energy Academy row shows status 'Đang hoạt động' (ACTIVE), hostname mekong.beta.skillpixel.vn, administrators skillpixelad@gmail.com and skillpixeldeveloper@gmail.com, 1 contract, 1 licence, 0 learners, and 60.000.000 ₫ collected.

04 Contract HD-2026-MKE-001 detail PASS

https://viettel.beta.skillpixel.vn/admin/b2b/contracts/d21ae304-978c-4482-945e-527490101482

Contract HD-2026-MKE-001 is 'Đang hiệu lực' for Mekong Energy Academy, dated 25/05/2026 — 25/05/2027. Header values are 0 / 50 seats, 1 licence, 120.000.000 ₫ value, 60.000.000 ₫ collected, and 60.000.000 ₫ outstanding. The licensed-courses tab shows 'An toàn thông tin cho người lao động' with status 'Đang cấp phép' (ACTIVE), 0 learners, 0 completions, and snapshot date 25/08/2026, which is today's local date. The payments tab shows 60.000.000 ₫ collected on 25/06/2026 with document UNC-2026-0412, recorded by skillpixeldeveloper@gmail.com, note 'Đợt 1'.

05 Mekong Energy Academy landing PASS

https://mekong.beta.skillpixel.vn/

HTTPS loaded directly with no TLS warning. The title is 'Mekong Energy Academy'. The header includes the text 'Mekong Energy Academy' and references the default SkillPixel asset /images/logo/ic-logo-sm.svg at 32 x 32, but the mark itself is visually blank/white against the white header in the full-page screenshot. The catalogue shows 'An toàn thông tin cho người lao động' with the exact label 'Miễn phí'. (Reviewer note: same full-page capture artifact for the header image; the DOM had /images/logo/ic-logo-sm.svg loaded at 32×32 and the headless capture shows the mark. Not a defect.)

Issues
  • The supported Chrome page sandbox did not expose sessionStorage, so sessionStorage.clear() could not be completed. A Cmd+Shift+R hard refresh was completed.

06 Mekong licensed content PASS

https://mekong.beta.skillpixel.vn/admin/licensed-content

Signed in with Google as skillpixeldeveloper@gmail.com. The page says 'Khoá học do Viettel Academy cấp phép cho tổ chức của bạn.' Contract HD-2026-MKE-001 is 'Đang hiệu lực', dated 25/05/2026 — 25/05/2027, with '0 / 50 suất học đã dùng'. The licensed course is 'An toàn thông tin cho người lao động', published, 'Đang cấp phép', with 0 learners, 0 completions, and snapshot date 25/08/2026. The sidebar contains 'Nội dung được cấp phép' and has no 'Cấp phép B2B' group.

07 Licensed course read-only instructor view PASS

https://mekong.beta.skillpixel.vn/instructor/courses/an-toan-thong-tin-cho-nguoi-lao-dong/chapters

The instructor view shows the badge 'Cấp phép bởi Viettel Academy' and the notice 'Nội dung khoá học do đơn vị cấp phép quản lý nên không thể chỉnh sửa, xuất bản, xoá hay nhân bản tại đây.' No add, save, edit, publish, delete, or duplicate controls are present in the content view. Chapter 1 'Nhận diện rủi ro' expands to show two readings. Opening 'Thư lừa đảo và mạo danh' displays the article heading 'Thư lừa đảo (phishing)' and text: 'Kẻ tấn công giả mạo đối tác, ngân hàng hoặc lãnh đạo để lấy thông tin đăng nhập. Luôn kiểm tra địa chỉ người gửi, không bấm vào liên kết lạ và báo cáo cho bộ phận an toàn thông tin.'

08 Mekong learner course page PASS

https://mekong.beta.skillpixel.vn/courses/an-toan-thong-tin-cho-nguoi-lao-dong

The learner page shows 'An toàn thông tin cho người lao động', the price label 'Miễn phí', and status 'Đang mở đăng ký'. It does not show an enroll or 'Miễn phí' CTA; the only primary CTA is 'Thêm vào Giỏ hàng'. No enrollment or cart action was taken. (Reviewer note: 'Thêm vào Giỏ hàng' is the designed path — free courses enrol through the cart's zero-cost checkout; the price label reads 'Miễn phí'. Not a defect.)

09 Default SkillPixel admin sidebar PASS

https://beta.skillpixel.vn/admin/users

The existing beta.skillpixel.vn session was curoa99@gmail.com. It was signed out, then the default tenant was signed in with Google as skillpixeldeveloper@gmail.com. The /admin route itself returned the site's 404 page, so /admin/users was opened as instructed. The sidebar groups are Nhân sự, Học tập, Kinh doanh, and Nền tảng. It has no 'Cấp phép B2B' group and no 'Nội dung được cấp phép' item.