Private/TestCaseManagement/Get-TcmRelativeTestCasePath.ps1

function Get-TcmRelativeTestCasePath {
    <#
        .SYNOPSIS
            Gets the relative path of a test case file from the TestCases root.

        .PARAMETER FilePath
            Full path to the test case file.

        .PARAMETER TestCasesRoot
            Root directory for test cases.
    #>


    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string] $FilePath,

        [string] $TestCasesRoot
    )

    if (-not $TestCasesRoot) {
        $moduleRoot = Split-Path -Parent (Split-Path -Parent (Split-Path -Parent $PSScriptRoot))
        $TestCasesRoot = Join-Path $moduleRoot "TestCases"
    }

    # Normalize paths
    $FilePath = [System.IO.Path]::GetFullPath($FilePath)
    $TestCasesRoot = [System.IO.Path]::GetFullPath($TestCasesRoot)

    # Get relative path
    $relativePath = [System.IO.Path]::GetRelativePath($TestCasesRoot, $FilePath)

    # Convert backslashes to forward slashes for consistency
    return $relativePath -replace '\\', '/'
}