Skip to content

[Bug] Running Tests from VS Code differs from running in AL Test Tool. GuiAllowed() is false from VS Code and true from AL Test Tool #8217

@SPinkow

Description

@SPinkow

1. Describe the bug
I’ve been looking into running Business Central tests directly from VS Code. Until now, I’ve been using the AL Test Tool to run the tests. All my tests have run successfully there. The tests also run successfully in GitHub Pipelines and Azure DevOps Pipelines. However, when I run the same test on the same database in the same tenant from VS Code, the test fails. One possible cause seems to be the different handling of GuiAllowed(). In the AL Test Tool, GuiAllowed = true is returned (and apparently also when running tests in pipelines). When running tests from VS Code, GuiAllowed = false was returned.
Consequently, the ConfirmHandlers in the tests that relied on this were no longer executed, causing the tests to fail.

I think the runtime environment should return the same values for system functions (and in particular GuiAllowed) regardless of where a test is called from. I expect the value to be the same as it is returned in the AL Test Tool to ensure backward compatibility.

2. To Reproduce

  1. Create an app that includes a confirmation prompt in a process. For example, something like this:

    Image
  2. Create a test in a test codeunit that uses this function. The test function should have a ConfirmHandler. For example, like this:

    Image
  3. Run the test once from the AL Test Tool in the client -> The test should succeed

    Image
  4. Run the test from VS Code. The test fails because the ConfirmHandler was not executed.

    Image

Code to copy into a TestCodeunit:

    procedure ShowConfirm(ConfirmQst: Text): Boolean
    begin
        if GuiAllowed() then begin
            Commit();
            exit(Confirm(ConfirmQst));
        end;

        exit(true);
    end;

    [Test]
    [HandlerFunctions('GuiallowedFlagConfirmHandler')]
    procedure TestGuiallowedFlag()
    begin
        ShowConfirm('Test Confirm');
    end;

    [ConfirmHandler]
    procedure GuiallowedFlagConfirmHandler(Question: Text[1024]; var Reply: Boolean)
    begin
        Reply := true;
    end;

Note: Because the developers need to copy and paste the code snippet, including a code snippet as a media file (i.e. .gif) is not sufficient.

3. Expected behavior
I think the runtime environment should return the same values for system functions (and in particular GuiAllowed) regardless of where a test is called from. I expect the value to be the same as it is returned in the AL Test Tool to ensure backward compatibility.

4. Actual behavior
See the description above

5. Versions:

  • AL Language: 18.0.2190758
  • Visual Studio Code:
Image
  • Business Central: W1 29.0 (Platform 29.0.47575.0 + Application 29.0.47628.0)
  • List of Visual Studio Code extensions that you have installed: AL Language
  • Operating System:
    • Windows
    • Linux
    • MacOS

Final Checklist

Please remember to do the following:

  • Search the issue repository to ensure you are reporting a new issue

  • Reproduce the issue after disabling all extensions except the AL Language extension

  • Simplify your code around the issue to better isolate the problem

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions