Skip to content

Feature Request: Support for remote attachments #561

@Tiberriver256

Description

@Tiberriver256

Hello,

I am using Allure.Reqnroll.

Steps to reproduce

Run the following code:

AllureApi.AddAttachment(
    "Video Recording",
    "video/mp4",
    "https://www.browserstack.com/some-video.mp4"
);

Expected outcome

The video is not downloaded but playable in the report

Actual outcome

Received the following error:

System.IO.IOException : The filename, directory name, or volume label syntax is incorrect. : 'C:\my-project\bin\Debug\net8.0\https:\www.browserstack.com\some-video.mp4'

Additional notes

I also tried this:

var attachment = new Attachment
{
    name = "Video Recording",
    type = "video/mp4",
    source = "https://www.browserstack.com/some-video.mp4"
};
AllureLifecycle.Instance.UpdateExecutableItem(
    delegate(ExecutableItem item)
    {
        item.attachments.Add(attachment);
    }
);

It worked! When I ran allure generate though I got the following error:

Exception in thread "main" java.nio.file.InvalidPathException: Illegal char <:> at index 5: https://www.browserstack.com/some-video.mp4
        at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
        at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
        at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
        at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
        at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:232)
        at java.base/java.nio.file.Path.resolve(Path.java:515)
        at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:267)
        at io.qameta.allure.allure2.Allure2Plugin.lambda$convert$10(Allure2Plugin.java:232)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at io.qameta.allure.util.ConvertUtils.convertList(ConvertUtils.java:45)
        at io.qameta.allure.util.ConvertUtils.convertList(ConvertUtils.java:36)
        at io.qameta.allure.allure2.Allure2Plugin.convert(Allure2Plugin.java:232)
        at io.qameta.allure.allure2.Allure2Plugin.lambda$processStages$5(Allure2Plugin.java:159)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at io.qameta.allure.allure2.Allure2Plugin.processStages(Allure2Plugin.java:160)
        at io.qameta.allure.allure2.Allure2Plugin.lambda$readResults$1(Allure2Plugin.java:122)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
        at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:754)
        at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
        at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:686)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateParallel(ForEachOps.java:159)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateParallel(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
        at io.qameta.allure.allure2.Allure2Plugin.readResults(Allure2Plugin.java:121)
        at io.qameta.allure.ReportGenerator.lambda$readResults$0(ReportGenerator.java:55)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
        at io.qameta.allure.ReportGenerator.readResults(ReportGenerator.java:55)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:120)
        at io.qameta.allure.ReportGenerator.generate(ReportGenerator.java:103)
        at io.qameta.allure.Commands.generate(Commands.java:146)
        at io.qameta.allure.Commands.generate(Commands.java:174)
        at io.qameta.allure.CommandLine.run(CommandLine.java:160)
        at java.base/java.util.Optional.orElseGet(Optional.java:364)
        at io.qameta.allure.CommandLine.main(CommandLine.java:92)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions