@@ -4,10 +4,12 @@ import com.github.automatedowl.tools.AllureEnvironmentWriter.allureEnvironmentWr
4
4
import com.google.common.collect.ImmutableMap
5
5
import com.malinskiy.marathon.analytics.internal.sub.ExecutionReport
6
6
import com.malinskiy.marathon.config.Configuration
7
+ import com.malinskiy.marathon.config.vendor.VendorConfiguration
7
8
import com.malinskiy.marathon.device.DeviceInfo
8
9
import com.malinskiy.marathon.execution.AttachmentType
9
10
import com.malinskiy.marathon.execution.TestResult
10
11
import com.malinskiy.marathon.execution.TestStatus
12
+ import com.malinskiy.marathon.extension.relativePathTo
11
13
import com.malinskiy.marathon.report.Reporter
12
14
import com.malinskiy.marathon.test.Test
13
15
import com.malinskiy.marathon.test.toClassName
@@ -21,6 +23,7 @@ import io.qameta.allure.model.Status
21
23
import io.qameta.allure.model.StatusDetails
22
24
import io.qameta.allure.util.ResultsUtils
23
25
import java.io.File
26
+ import java.net.URLEncoder
24
27
import java.util.Locale
25
28
import java.util.UUID
26
29
import io.qameta.allure.Description as JavaDescription
@@ -81,26 +84,32 @@ class AllureReporter(val configuration: Configuration, private val outputDirecto
81
84
82
85
val links = mutableListOf<Link >()
83
86
84
- val allureAttachments: List <Attachment > = testResult.attachments.mapNotNull {
85
- if (it .empty) {
87
+ val allureAttachments: List <Attachment > = testResult.attachments.mapNotNull { attachment ->
88
+ if (attachment .empty) {
86
89
null
87
90
} else {
88
- when (it.type) {
91
+ val androidConfiguration = configuration.vendorConfiguration as ? VendorConfiguration .AndroidConfiguration
92
+ when (attachment.type) {
89
93
AttachmentType .PROFILING -> links.add(
90
94
Link ().apply {
91
- setUrl(" https://cloud.marathonlabs.io/trace/view?todo=x" )
92
- setName(" Tracing" )
95
+ androidConfiguration?.profilingConfiguration?.urlTemplate?.let { urlTemplate ->
96
+ val relativePath = ' /' + attachment.file.relativePathTo(configuration.outputDir)
97
+ val urlEncodedPath = URLEncoder .encode(relativePath, Charsets .UTF_8 )
98
+ val url = urlTemplate.replace(" {}" , urlEncodedPath)
99
+ setUrl(url)
100
+ setName(" Tracing" )
101
+ }
93
102
}
94
103
)
95
104
96
105
else -> Unit
97
106
}
98
- val name = it .name ? : it .type.name.lowercase(Locale .ENGLISH )
107
+ val name = attachment .name ? : attachment .type.name.lowercase(Locale .ENGLISH )
99
108
.replaceFirstChar { cher -> if (cher.isLowerCase()) cher.titlecase(Locale .ENGLISH ) else cher.toString() }
100
109
Attachment ()
101
110
.setName(name)
102
- .setSource(it .file.absolutePath)
103
- .setType(it .type.mimeType)
111
+ .setSource(attachment .file.absolutePath)
112
+ .setType(attachment .type.mimeType)
104
113
}
105
114
}
106
115
0 commit comments