mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-09 02:41:37 +01:00
Add new action skills for AL testing and documentation
- Introduced `al-test-writer` to generate AL test codeunits for production objects based on TDD principles. - Added `al-userguide-test-writer` to create test codeunits from user guide steps, mapping actions and assertions. - Implemented `bc-extension-test-guide` to generate a comprehensive TEST_GUIDE.md for Business Central extensions, covering various categories. - Created `bc-webclient-runner` to automate UI testing of the Business Central web client, capturing screenshots and asserting UI states. - Developed `page-scripting-e2e` to produce a recording plan for Page Scripting, ensuring a structured approach to browser-level testing.
This commit is contained in:
parent
822cae1b27
commit
07140e2223
76 changed files with 4353 additions and 6 deletions
|
|
@ -0,0 +1,35 @@
|
|||
// Anti-pattern: a hand-written HTTP retry loop for a fire-and-forget notification. It
|
||||
// reimplements platform retry, backoff, and durability (usually less correctly), couples
|
||||
// delivery to BC staying up for the life of the loop, and runs inline on the caller's thread.
|
||||
|
||||
codeunit 50162 "Shipment Notifier Bad"
|
||||
{
|
||||
procedure NotifyShipmentReleased(DocumentNo: Code[20])
|
||||
var
|
||||
Client: HttpClient;
|
||||
Content: HttpContent;
|
||||
Response: HttpResponseMessage;
|
||||
Attempt: Integer;
|
||||
begin
|
||||
Content.WriteFrom(BuildJson(DocumentNo));
|
||||
|
||||
// BAD: a hand-rolled retry loop for a one-way notification an external business event
|
||||
// would carry. Everything in this loop is something the platform already does for free.
|
||||
for Attempt := 1 to 5 do begin
|
||||
if Client.Post('https://wms.contoso.com/api/events', Content, Response) then
|
||||
// BAD: status classification by hand. A real implementation must distinguish
|
||||
// 408/429/5xx (retry) from 4xx (give up), and this one does not even try.
|
||||
if Response.IsSuccessStatusCode() then
|
||||
exit;
|
||||
|
||||
// BAD: hand-rolled backoff. The platform's external-event delivery already retries
|
||||
// with backoff for up to ~36 hours and persists the state across restarts.
|
||||
Sleep(Attempt * 2000);
|
||||
end;
|
||||
|
||||
// BAD: the loop lives entirely in this session. If the WMS is DOWN for the whole window
|
||||
// the notification is lost; and if BC RESTARTS mid-loop, the retry state is gone and the
|
||||
// notification is silently lost with no record that it was ever attempted. Nobody is
|
||||
// alerted, so the gap is found only when downstream is discovered to be out of sync.
|
||||
end;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue