Be😒❤️பெயர் මම

BuyMe Blog — QA Test Plan Manual test scenarios for the blog feature (public reading + admin management) FEATURE Blog: public pages + admin CRUD ENVIRONMENT Staging — stg.buyme.lk ADMIN URL /srs/admin/blogs PUBLIC URL /blogs Before you start Log in at stg.buyme.lk/srs/login as an admin. You need at least one blog category to exist — check Blog Management → Categories first; if the list is empty, create one, because the New Post form cannot assign a category that does not exist. Timing note: the public blog pages are cached for 60 seconds. After publishing, unpublishing or editing, wait up to a minute and refresh before calling something a bug. Staging runs more than one server, so during that minute a post may appear on one refresh and vanish on the next — this is expected and settles on its own.
- Admin — creating and editing posts
ID SCENARIO EXPECTED RESULT PASS/FAIL A-01 Open Blog Management from the sidebar (under Content). A proper admin screen loads with All Posts / Published / Drafts counts. Not raw JSON text in the browser. A-02 Click New Post, fill title + content, pick a category, tick Published, save. Redirects to the list with a success message. Post appears with status Published and today's date. A-03 Create a post with Published unticked. Saves as Draft. Drafts count increases. Published date column shows a dash. A-04 Create a post and upload a cover image (JPEG or PNG under 5 MB). Image uploads and displays as a thumbnail in the list. A-05 Edit an existing post that has an image. Change only the title. Do not choose a new file. Save. Title updates and the existing image is still there. This specific case was previously broken. A-06 Edit a post and replace its image with a different one. New image shows everywhere. Old one is gone. A-07 Create a post without selecting a category. Saves fine. Category column shows Uncategorised. Not an error. A-08 Delete a post via the trash icon. Asks for confirmation first. After confirming, the post is gone and counts update. Validation — these should be politely rejected, not crash ID SCENARIO EXPECTED RESULT PASS/FAIL A-09 Save a post with the title empty. Inline error under the Title field. Nothing saved. No white error page. A-10 Save a post with the content empty. Inline error under Content. Nothing saved. A-11 Paste a title longer than 255 characters. Rejected with a clear message, or the field stops accepting input. No database error. A-12 Try uploading a PDF or .txt as the cover image. Rejected with an error about the file type. A-13 Try uploading an image larger than 5 MB. Rejected with a size error. Does not hang or half-save.
- Publish / unpublish behaviour
Why this section matters A post is only visible to the public when it is marked published and its publish date has already passed. Both conditions. This is the area most likely to produce surprising results, so please test it carefully. ID SCENARIO EXPECTED RESULT PASS/FAIL P-01 Publish a draft using the eye icon in the list. Status flips to Published. Publish date fills in with the current time. P-02 Unpublish a published post using the same icon. Status flips to Draft. Within ~60s it disappears from the public /blogs page. P-03 Republish a post that was published last week, then unpublished. Keeps its original publish date — it should not jump to today. P-04 Create a post, tick Published, but set the publish date to tomorrow. Shows as Published in admin, but is NOT visible on the public /blogs page yet. This is intended scheduling behaviour. P-05 Tick Published but leave the publish date empty. Date auto-fills with now, and the post does appear publicly. It must not silently vanish.
- Categories
ID SCENARIO EXPECTED RESULT PASS/FAIL C-01 Open Categories, add a new one with a name and description. Appears in the list immediately and becomes selectable in the New Post form. ID SCENARIO EXPECTED RESULT PASS/FAIL C-02 Add a category using a name that already exists. Rejected — duplicate names are not allowed. C-03 Rename a category that has posts assigned. New name shows on the posts. Posts stay attached. C-04 Try to delete a category that has posts in it. Blocked, with a message saying how many posts use it. Posts must not silently become Uncategorised. C-05 Delete a category with zero posts. Deletes successfully after confirmation. C-06 Mark a category inactive, then open the New Post form. That category no longer appears in the dropdown.
- Filters, search and list
ID SCENARIO EXPECTED RESULT PASS/FAIL F-01 Click the Published tab. Only published posts listed. F-02 Click the Draft tab. Only drafts listed. F-03 Pick a category from the dropdown. Only that category's posts show. Counts stay sensible. F-04 Search a word that appears in a post's title, press Enter. Matching posts listed. F-05 Search a word that appears only in a post's body. Matching posts still found — search covers content, not just titles. F-06 Combine a status tab + category + search term together. All three narrow the list at once. Selections stay visible after the page reloads. F-07 Search for nonsense like zzzzqqq . Friendly "No blog posts found" message. Not a blank or broken page. F-08 Create 16+ posts and page through the list. Pagination appears after 15 per page. Filters stay applied across pages.
- Public blog pages
Remember the 60-second cache Every check in this section may take up to a minute to reflect an admin change. If something looks wrong, refresh after a minute before raising it. During that window a post may flicker between refreshes — that is the caching, not a defect. ID SCENARIO EXPECTED RESULT PASS/FAIL B-01 Visit stg.buyme.lk/blogs as a logged-out visitor. Published posts listed as cards with image, title, category and date. B-02 Confirm drafts are not listed here. Only published posts. A draft must never be publicly visible. CRITICAL B-03 Click a post card. Opens the full post at /blogs/<number> with complete content. B-04 On a post, click All posts. Returns to the blog list. B-05 Open a draft's URL directly, e.g. /blogs/<draft id> while logged out. Shows a "not found" page. Draft content must not be readable. CRITICAL B-06 Visit a post ID that does not exist, e.g. /blogs/99999 . A "not found" page. No crash, no endless loading. B-07 Visit a nonsense URL like /blogs/abc . Handled gracefully — "not found", not a technical error page. B-08 View a post with no cover image. Placeholder icon shown. Layout does not break. B-09 Write a post with several paragraphs (blank lines between them) and view it publicly. Paragraph breaks preserved — not one solid block of text. B-10 Click Blog in the site footer. Goes to the new /blogs page. B-11 When no posts are published at all, open /blogs . Friendly "No blog posts have been published yet" message. B-12 Open /blogs and a post on a phone, and in dark mode. Readable in both. Text does not overflow; no horizontal scrolling.
- Permissions — please do not skip
This section covers a bug that was fixed Before the fix, staff accounts that should have no blog access could open blog management and create, edit or delete posts. These tests confirm it stays fixed. If any of them fail, treat it as a serious issue and report it immediately. ID SCENARIO EXPECTED RESULT PASS/FAIL S-01 Log in as a Finance user and go to /srs/admin/blogs . Blocked / redirected away. No blog screen. CRITICAL S-02 Log in as a Manager user and try the same URL. Blocked. CRITICAL S-03 Log in as a Delivery user and try the same URL. Blocked. CRITICAL S-04 As Finance / Manager / Delivery, also try /srs/admin/blog-categories . Blocked for all three. CRITICAL S-05 Check the sidebar for those three roles. No Blogs menu item shown. S-06 Log out completely, then open /srs/admin/blogs . Redirected to login. No admin content visible. CRITICAL S-07 Log in as a normal buyer/seller account and try the admin blog URL. Blocked. CRITICAL
- Content safety
ID SCENARIO EXPECTED RESULT PASS/FAIL X-01 Create a post whose body contains <script>alert('x')</script> and view it publicly. Shown as plain visible text. No popup appears. CRITICAL X-02 Put HTML like <b>bold</b> in the body. Displays literally as typed, not rendered as formatting. This is intended. X-03 Use the same script text in the title. Shown as text in list and detail. No popup. CRITICAL X-04 Use emoji and non-English characters (Sinhala / Tamil) in title and body. Display correctly in admin and publicly. No question marks or boxes. X-05 Paste a very long body (several thousand words) and save. Saves and displays fully. No truncation mid-word, no timeout.
- End-to-end journey
ID SCENARIO EXPECTED RESULT PASS/FAIL E-01 Full lifecycle: create category → write post as draft → confirm not public → publish → confirm public → edit title → confirm change appears → unpublish → confirm gone → delete. Every step behaves as described, allowing up to 60s for public pages to catch up. E-02 Publish 3 posts at different times, then view /blogs . Newest post appears first. ID SCENARIO E-03 E-04 Open stg.buyme.lk/sitemap.xml and search for "blogs". Confirm the old blog page at /srs/blogs still opens. When reporting a bug EXPECTED RESULT PASS/FAIL /blogs is listed, plus a URL per published post. Drafts must not appear. Still works — the new pages must not have broken it. Please include: The test ID (e.g. P-04) and what you did step by step What you expected vs. what actually happened The exact URL and which role you were logged in as A screenshot, and the post ID if relevant Whether you waited 60+ seconds and refreshed before reporting a public-page issue Known and expected — not bugs • Public pages take up to 60 seconds to reflect admin changes, and may flicker during that window. • A published post dated in the future stays hidden until that time arrives. • Blog URLs use numbers ( • HTML typed into a post shows as plain text — this is deliberate, for security. /blogs/12 ), not word-based addresses. BuyMe Blog QA Test Plan · 52 scenarios · Staging: stg.buyme.lk · Tester: ____________________ · Date: ____________
