Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to detect unit tests in project with multiple package.json files #2486

Open
PindaPixel opened this issue Oct 25, 2023 · 0 comments
Open

Comments

@PindaPixel
Copy link

Expected Behavior

Unit tests are found when multiple package.json files exist in the project.

Actual Behavior
  • NTVS Version: 1.5.10610.1
  • Visual Studio Version: 2022 17.7.6
  • Node.js Version: 20.8.1
Steps to Reproduce
  1. Create a project using the ASP.NET Core with Angular template
  2. Add a package.json at the root level of the project, now the folder structure should look as follows (excerpt):
    MyProject/
    ├─ ClientApp/
    │  ├─ package.json
    ├─ Controllers/
    ├─ Pages/
    ├─ wwwroot/
    ├─ package.json
    ├─ Program.cs
    
  3. Edit the project configuration for unit testing with Karma/Jasmine:
<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
  	  <TargetFramework>net7.0</TargetFramework>
  	  <Nullable>enable</Nullable>
  	  <IsPackable>false</IsPackable>
  	  <SpaRoot>ClientApp\</SpaRoot>
  	  <SpaProxyServerUrl>https://localhost:44445</SpaProxyServerUrl>
  	  <SpaProxyLaunchCommand>npm start</SpaProxyLaunchCommand>
  	  <ImplicitUsings>enable</ImplicitUsings>

  	  <!-- Unit tests -->
  	  <JavaScriptTestRoot>ClientApp\</JavaScriptTestRoot>
  	  <JavaScriptTestFramework>Jasmine</JavaScriptTestFramework>
  	  <GenerateProgramFile>false</GenerateProgramFile>
    </PropertyGroup>

    <ItemGroup>
  	  <PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="7.0.13" />
  	  <PackageReference Include="Microsoft.JavaScript.UnitTest" Version="1.5.10610.1">
  		  <PrivateAssets>all</PrivateAssets>
  		  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  	  </PackageReference>
    </ItemGroup>

    <ItemGroup>
  	  <!-- Don't publish the SPA source files, but do show them in the project files list -->
  	  <Content Remove="$(SpaRoot)**" />
  	  <None Remove="$(SpaRoot)**" />
  	  <None Include="$(SpaRoot)**" Exclude="$(SpaRoot)node_modules\**" />
    </ItemGroup>

    <Target Name="DebugEnsureNodeEnv" BeforeTargets="Build" Condition=" '$(Configuration)' == 'Debug' And !Exists('$(SpaRoot)node_modules') ">
  	  <!-- Ensure Node.js is installed -->
  	  <Exec Command="node --version" ContinueOnError="true">
  		  <Output TaskParameter="ExitCode" PropertyName="ErrorCode" />
  	  </Exec>
  	  <Error Condition="'$(ErrorCode)' != '0'" Text="Node.js is required to build and run this project. To continue, please install Node.js from https://nodejs.org/, and then restart your command prompt or IDE." />
  	  <Message Importance="high" Text="Restoring dependencies using 'npm'. This may take several minutes..." />
  	  <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
    </Target>

    <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
  	  <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
  	  <Exec WorkingDirectory="$(SpaRoot)" Command="npm install" />
  	  <Exec WorkingDirectory="$(SpaRoot)" Command="npm run build -- --configuration production" />

  	  <!-- Include the newly-built files in the publish output -->
  	  <ItemGroup>
  		  <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
  		  <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
  			  <RelativePath>wwwroot\%(RecursiveDir)%(FileName)%(Extension)</RelativePath>
  			  <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
  			  <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
  		  </ResolvedFileToPublish>
  	  </ItemGroup>
    </Target>
</Project>
  1. Reload the project
  2. Notice the Test Explorer is unable to find any tests
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant