REST Resource: projects.histories.executions.steps

Ressource : Étape

Une étape représente une opération unique effectuée dans le cadre de l'exécution. Une étape peut être utilisée pour représenter l'exécution d'un outil (par exemple l'exécution d'un lanceur de tests ou l'exécution d'un compilateur).

Les étapes peuvent se chevaucher (par exemple, deux étapes peuvent avoir la même heure de début si certaines opérations sont effectuées en parallèle).

Voici un exemple, considérons que nous avons une construction continue qui exécute un lanceur de tests pour chaque itération. Le flux de travail ressemblerait à : - l'utilisateur crée une exécution avec l'ID 1 - l'utilisateur crée un TestExecutionStep avec l'ID 100 pour l'exécution 1 - l'utilisateur met à jour TestExecutionStep avec l'ID 100 pour ajouter un journal XML brut + le service analyse les journaux XML et renvoie un TestExecutionStep avec Résultat(s) de test mis à jour. - l'utilisateur met à jour le statut de TestExecutionStep avec l'ID 100 sur COMPLETE

Une étape peut être mise à jour jusqu'à ce que son état soit défini sur COMPLETE, auquel cas elle devient immuable.

Représentation JSON
{
  "stepId": string,
  "creationTime": {
    object (Timestamp)
  },
  "completionTime": {
    object (Timestamp)
  },
  "name": string,
  "description": string,
  "state": enum (State),
  "outcome": {
    object (Outcome)
  },
  "hasImages": boolean,
  "labels": {
    string: string,
    ...
  },
  "dimensionValue": {
    string: string,
    ...
  },
  "runDuration": {
    object (Duration)
  },
  "deviceUsageDuration": {
    object (Duration)
  },
  "multiStep": {
    object (MultiStep)
  },

  // Union field step can be only one of the following:
  "testExecutionStep": {
    object (TestExecutionStep)
  },
  "toolExecutionStep": {
    object (ToolExecutionStep)
  }
  // End of list of possible types for union field step.
}
Des champs
stepId

string

Un identifiant unique au sein d'une exécution pour cette étape.

Renvoie INVALID_ARGUMENT si ce champ est défini ou écrasé par l'appelant.

  • En réponse : toujours défini
  • Dans la demande de création/mise à jour : jamais définie
creationTime

object ( Timestamp )

Heure à laquelle l'étape a été créée.

  • En réponse : toujours défini
  • Dans la demande de création/mise à jour : jamais définie
completionTime

object ( Timestamp )

Heure à laquelle le statut de l'étape a été défini sur Terminer.

Cette valeur sera définie automatiquement lorsque l’état passe à COMPLETE.

  • En réponse : défini si l'état d'exécution est COMPLETE.
  • Dans la demande de création/mise à jour : jamais définie
name

string

Un nom court et lisible par l'homme à afficher dans l'interface utilisateur. Maximum de 100 caractères. Par exemple : version propre

Un PRECONDITION_FAILED sera renvoyé lors de la création d'une nouvelle étape si elle partage son nom et sa dimensionValue avec une étape existante. Si deux étapes représentent une action similaire, mais ont des valeurs de dimension différentes, elles doivent partager le même nom. Par exemple, si le même ensemble de tests est exécuté sur deux plates-formes différentes, les deux étapes doivent porter le même nom.

  • En réponse : toujours défini
  • Dans la demande de création : toujours défini
  • Dans la demande de mise à jour : jamais défini
description

string

Une description de cet outil Par exemple : mvn clean package -D skipTests=true

  • En réponse : présent si défini par la demande de création/mise à jour
  • Dans la demande de création/mise à jour : facultatif
state

enum ( State )

L'état initial est IN_PROGRESS. Les seules transitions d'état légales sont * IN_PROGRESS -> COMPLETE

Un PRECONDITION_FAILED sera renvoyé si une transition non valide est demandée.

Il est possible de créer une étape avec un état défini sur COMPLETE. L’état ne peut être défini sur COMPLETE qu’une seule fois. Un PRECONDITION_FAILED sera renvoyé si l'état est défini plusieurs fois sur COMPLETE.

  • En réponse : toujours défini
  • Dans la demande de création/mise à jour : facultatif
outcome

object ( Outcome )

Classification du résultat, par exemple en SUCCÈS ou ÉCHEC

  • En réponse : présent si défini par la demande de création/mise à jour
  • Dans la demande de création/mise à jour : facultatif
hasImages

boolean

Si l'une des sorties de cette étape est des images dont les vignettes peuvent être récupérées avec thumbnails.list.

  • En réponse : toujours défini
  • Dans la demande de création/mise à jour : jamais définie
labels

map (key: string, value: string)

Paires clé/valeur arbitraires fournies par l’utilisateur et associées à l’étape.

Les utilisateurs sont responsables de la gestion de l'espace de noms des clés de manière à ce que les clés n'entrent pas en collision accidentellement.

Un INVALID_ARGUMENT sera renvoyé si le nombre d'étiquettes dépasse 100 ou si la longueur de l'une des clés ou valeurs dépasse 100 caractères.

  • En réponse : toujours défini
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : facultatif ; toute nouvelle paire clé/valeur sera ajoutée à la carte et toute nouvelle valeur pour une clé existante mettra à jour la valeur de cette clé

Un objet contenant une liste de paires "key": value . Exemple : { "name": "wrench", "mass": "1.3kg", "count": "3" } .

dimensionValue

map (key: string, value: string)

Si l'exécution contenant cette étape a un ensemble dimension_definition, alors ce champ permet à l'enfant de spécifier les valeurs des dimensions.

Les clés doivent correspondre exactement à la dimension_definition de l'exécution.

Par exemple, si l'exécution a dimension_definition = ['attempt', 'device'] alors une étape doit définir des valeurs pour ces dimensions, par exemple. dimensionValue = ['attempt': '1', 'device': 'Nexus 6']

Si une étape ne participe pas à une dimension de la matrice, la valeur de cette dimension doit être une chaîne vide. Par exemple, si l'un des tests est exécuté par un exécuteur qui ne prend pas en charge les nouvelles tentatives, l'étape pourrait avoir dimensionValue = ['attempt': '', 'device': 'Nexus 6']

Si l’étape ne participe à aucune dimension de la matrice, elle peut laisser dimensionValue non définie.

Un PRECONDITION_FAILED sera renvoyé si l'une des clés n'existe pas dans la dimension_definition de l'exécution.

Un PRECONDITION_FAILED sera renvoyé si une autre étape de cette exécution a déjà le même nom et la même dimensionValue, mais diffère sur d'autres champs de données, par exemple, le champ d'étape est différent.

Un PRECONDITION_FAILED sera renvoyé si dimensionValue est défini et qu'il existe une dimension_definition dans l'exécution qui n'est pas spécifiée comme l'une des clés.

  • En réponse : présent si défini par create
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : jamais défini

Un objet contenant une liste de paires "key": value . Exemple : { "name": "wrench", "mass": "1.3kg", "count": "3" } .

runDuration

object ( Duration )

Combien de temps il a fallu pour que cette étape s'exécute.

S'il n'est pas défini, il correspond à la différence entre CreationTime et CompletionTime lorsque l'étape est définie sur l'état COMPLETE. Dans certains cas, il est approprié de définir cette valeur séparément : Par exemple, si une étape est créée, mais que l'opération qu'elle représente est mise en file d'attente quelques minutes avant son exécution, il serait approprié de ne pas inclure le temps passé en file d'attente dans sa file d'attente. durée d'exécution.

PRECONDITION_FAILED sera renvoyé si l'on tente de définir une runDuration sur une étape pour laquelle ce champ est déjà défini.

  • En réponse : présent si défini précédemment ; toujours présent à l'étape COMPLÈTE
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : facultatif
deviceUsageDuration

object ( Duration )

Quelle quantité de ressources de l'appareil est utilisée pour effectuer le test.

Il s'agit de l'utilisation de l'appareil utilisée à des fins de facturation, qui est différente de la durée d'exécution. Par exemple, une panne d'infrastructure ne sera pas facturée pour l'utilisation de l'appareil.

PRECONDITION_FAILED sera renvoyé si l'on tente de définir un device_usage sur une étape pour laquelle ce champ est déjà défini.

  • En réponse : présent si défini précédemment.
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : facultatif
multiStep

object ( MultiStep )

Détails lorsque plusieurs étapes sont exécutées avec la même configuration en tant que groupe. Ces détails peuvent être utilisés pour identifier le groupe dont cette étape fait partie. Il identifie également « l'étape principale » du groupe qui indexe tous les membres du groupe.

  • En réponse : présent si défini précédemment.
  • Dans la demande de création : facultatif, définissez si cette étape a été effectuée plus d'une fois.
  • Dans la demande de mise à jour : facultatif

step de champ syndical.

step ne peut être que l'un des éléments suivants :

testExecutionStep

object ( TestExecutionStep )

Une exécution d’un testeur.

toolExecutionStep

object ( ToolExecutionStep )

Une exécution d'un outil (utilisé pour les étapes que nous ne prenons pas explicitement en charge).

Étape d'exécution de test

Une étape qui représente l’exécution de tests.

Il accepte les fichiers XML Ant-junit qui seront analysés en résultats de tests structurés par le service. Les chemins des fichiers XML sont mis à jour afin d'ajouter davantage de fichiers, mais ils ne peuvent pas être supprimés.

Les utilisateurs peuvent également ajouter des résultats de test manuellement en utilisant le champ test_result.

Représentation JSON
{
  "testSuiteOverviews": [
    {
      object (TestSuiteOverview)
    }
  ],
  "toolExecution": {
    object (ToolExecution)
  },
  "testIssues": [
    {
      object (TestIssue)
    }
  ],
  "testTiming": {
    object (TestTiming)
  }
}
Des champs
testSuiteOverviews[]

object ( TestSuiteOverview )

Liste du contenu de la présentation de la suite de tests. Cela pourrait être analysé à partir du journal XML xUnit par le serveur ou téléchargé directement par l'utilisateur. Ces références ne doivent être appelées que lorsque les suites de tests sont entièrement analysées ou téléchargées.

Le nombre maximum autorisé de présentations de suites de tests par étape est de 1 000.

  • En réponse : toujours défini
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : jamais (utilisez plutôt la méthode personnalisée submitXunitXmlFiles)
toolExecution

object ( ToolExecution )

Représente l’exécution du programme d’exécution du test.

Le code de sortie de cet outil sera utilisé pour déterminer si le test a réussi.

  • En réponse : toujours défini
  • Dans la demande de création/mise à jour : facultatif
testIssues[]

object ( TestIssue )

Problèmes observés lors de l’exécution du test.

Par exemple, si l'application mobile testée plante pendant le test, le message d'erreur et le contenu de la trace de la pile peuvent être enregistrés ici pour faciliter le débogage.

  • En réponse : présent si défini par la création ou la mise à jour
  • Dans la demande de création/mise à jour : facultatif
testTiming

object ( TestTiming )

Découpage du timing de l'exécution du test.

  • En réponse : présent si défini par la création ou la mise à jour
  • Dans la demande de création/mise à jour : facultatif

OutilExécution

Une exécution d’un outil arbitraire. Il peut s'agir d'un lanceur de tests ou d'un outil copiant des artefacts ou déployant du code.

Représentation JSON
{
  "commandLineArguments": [
    string
  ],
  "toolLogs": [
    {
      object (FileReference)
    }
  ],
  "exitCode": {
    object (ToolExitCode)
  },
  "toolOutputs": [
    {
      object (ToolOutputReference)
    }
  ]
}
Des champs
commandLineArguments[]

string

La ligne de commande complète tokenisée incluant le nom du programme (équivalent à argv dans un programme C).

  • En réponse : présent si défini par la demande de création
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : jamais défini
toolLogs[]

object ( FileReference )

Les références à tous les journaux en texte brut génèrent l’exécution de l’outil.

Ce champ peut être paramétré avant la sortie de l'outil afin de pouvoir avoir accès à une vue en direct des logs pendant l'exécution de l'outil.

Le nombre maximum autorisé de journaux d’outils par étape est de 1 000.

  • En réponse : présent si défini par la demande de création/mise à jour
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : facultatif, toute valeur fournie sera ajoutée à la liste existante
exitCode

object ( ToolExitCode )

Code de sortie d’exécution de l’outil. Ce champ sera défini une fois l’outil quitté.

  • En réponse : présent si défini par la demande de création/mise à jour
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : facultatif, une erreur FAILED_PRECONDITION sera renvoyée si un exitCode est déjà défini.
toolOutputs[]

object ( ToolOutputReference )

Références à des fichiers opaques de n’importe quel format générés par l’exécution de l’outil.

Le nombre maximum autorisé de sorties d'outils par étape est de 1 000.

  • En réponse : présent si défini par la demande de création/mise à jour
  • Dans la demande de création : facultatif
  • Dans la demande de mise à jour : facultatif, toute valeur fournie sera ajoutée à la liste existante

Code de sortie de l'outil

Quittez le code d’une exécution d’outil.

Représentation JSON
{
  "number": integer
}
Des champs
number

integer

Code de sortie d’exécution de l’outil. Une valeur de 0 signifie que l'exécution a réussi.

  • En réponse : toujours défini
  • Dans la demande de création/mise à jour : toujours défini

Problème de test

Un problème détecté lors d’une exécution de test.

Représentation JSON
{
  "errorMessage": string,
  "stackTrace": {
    object (StackTrace)
  },
  "warning": {
    object (Any)
  },
  "severity": enum (Severity),
  "type": enum (Type),
  "category": enum (Category)
}
Des champs
errorMessage

string

Un bref message lisible par l'homme décrivant le problème. Requis.

stackTrace
(deprecated)

object ( StackTrace )

Obsolète au profit des champs de trace de pile dans des avertissements spécifiques.

warning

object ( Any )

Message d'avertissement avec des détails supplémentaires sur le problème. Doit toujours être un message provenant de com.google.devtools.toolresults.v1.warnings

severity

enum ( Severity )

Gravité du problème. Requis.

type

enum ( Type )

Type de problème. Requis.

category

enum ( Category )

Catégorie de problème. Requis.

N'importe lequel

Any contient un message tampon de protocole sérialisé arbitraire ainsi qu'une URL qui décrit le type du message sérialisé.

La bibliothèque Protobuf prend en charge le regroupement/décompression des valeurs Any sous la forme de fonctions utilitaires ou de méthodes générées supplémentaires de type Any.

Exemple 1 : emballer et décompresser un message en C++.

Foo foo = ...;
Any any;
any.PackFrom(foo);
...
if (any.UnpackTo(&foo)) {
  ...
}

Exemple 2 : Packer et décompresser un message en Java.

Foo foo = ...;
Any any = Any.pack(foo);
...
if (any.is(Foo.class)) {
  foo = any.unpack(Foo.class);
}

Exemple 3 : Packer et décompresser un message en Python.

foo = Foo(...)
any = Any()
any.Pack(foo)
...
if any.Is(Foo.DESCRIPTOR):
  any.Unpack(foo)
  ...

Exemple 4 : emballer et décompresser un message dans Go

 foo := &pb.Foo{...}
 any, err := ptypes.MarshalAny(foo)
 ...
 foo := &pb.Foo{}
 if err := ptypes.UnmarshalAny(any, foo); err != nil {
   ...
 }

Les méthodes pack fournies par la bibliothèque protobuf utiliseront par défaut « type.googleapis.com/full.type.name » comme URL de type et les méthodes de décompression n'utiliseront que le nom de type complet après le dernier « / » dans l'URL de type, par exemple "foo.bar.com/x/yz" donnera le nom de type "yz".

JSON

La représentation JSON d'une valeur Any utilise la représentation régulière du message désérialisé et intégré, avec un champ supplémentaire @type qui contient le type URL. Exemple:

package google.profile;
message Person {
  string first_name = 1;
  string last_name = 2;
}

{
  "@type": "type.googleapis.com/google.profile.Person",
  "firstName": <string>,
  "lastName": <string>
}

Si le type de message intégré est bien connu et possède une représentation JSON personnalisée, cette représentation sera intégrée en ajoutant une value de champ contenant le JSON personnalisé en plus du champ @type . Exemple (pour le message google.protobuf.Duration ) :

{
  "@type": "type.googleapis.com/google.protobuf.Duration",
  "value": "1.212s"
}
Représentation JSON
{
  "typeUrl": string,
  "value": string
}
Des champs
typeUrl

string

Un nom d'URL/de ressource qui identifie de manière unique le type du message de tampon de protocole sérialisé. Cette chaîne doit contenir au moins un caractère "/". Le dernier segment du chemin de l'URL doit représenter le nom complet du type (comme dans path/google.protobuf.Duration ). Le nom doit être sous une forme canonique (par exemple, le "." n'est pas accepté).

En pratique, les équipes précompilent généralement dans le binaire tous les types qu'elles s'attendent à ce qu'il utilise dans le contexte d'Any. Cependant, pour les URL qui utilisent le schéma http , https ou aucun schéma, on peut éventuellement configurer un serveur de types qui mappe les URL de type aux définitions de messages comme suit :

  • Si aucun schéma n'est fourni, https est supposé.
  • Un HTTP GET sur l'URL doit générer une valeur google.protobuf.Type au format binaire, ou produire une erreur.
  • Les applications sont autorisées à mettre en cache les résultats de recherche en fonction de l'URL ou à les précompiler en binaire pour éviter toute recherche. Par conséquent, la compatibilité binaire doit être préservée lors des modifications apportées aux types. (Utilisez des noms de types versionnés pour gérer les modifications avec rupture.)

Remarque : cette fonctionnalité n'est actuellement pas disponible dans la version officielle de protobuf et elle n'est pas utilisée pour les URL de type commençant par type.googleapis.com.

Des schémas autres que http , https (ou le schéma vide) peuvent être utilisés avec une sémantique spécifique à l'implémentation.

value

string ( bytes format)

Il doit s'agir d'un tampon de protocole sérialisé valide du type spécifié ci-dessus.

Une chaîne codée en base64.

Gravité

Gravité des problèmes.

Énumérations
unspecifiedSeverity Gravité par défaut non spécifiée. Ne pas utiliser. Pour la gestion des versions uniquement.
info Problème non critique, fournissant aux utilisateurs des informations sur le test.
suggestion Problème non critique, fournissant aux utilisateurs quelques conseils pour améliorer leur expérience de test, par exemple en suggérant d'utiliser des Game Loops.
warning Problème potentiellement critique.
severe Problème critique.

Taper

Types de problèmes.

Énumérations
unspecifiedType Type par défaut non spécifié. Ne pas utiliser. Pour la gestion des versions uniquement.
fatalException Le problème est une exception fatale.
nativeCrash Le problème est un crash natif.
anr Le problème est un crash ANR.
unusedRoboDirective Le problème est une directive robot inutilisée.
compatibleWithOrchestrator Le problème est une suggestion d’utiliser Orchestrator.
launcherActivityNotFound Problème avec la recherche d'une activité de lanceur
startActivityNotFound Problème lié à la résolution d'une intention fournie par l'utilisateur de démarrer une activité
incompleteRoboScriptExecution Un script Robo n'a pas été entièrement exécuté.
completeRoboScriptExecution Un script Robo a été exécuté entièrement et avec succès.
failedToInstall L'APK n'a pas pu être installé.
nonSdkApiUsageViolation L'application a accédé à une API non SDK.
nonSdkApiUsageReport L'application a accédé à une API non SDK (nouveau rapport détaillé)
encounteredNonAndroidUiWidgetScreen L'analyse robotique a rencontré au moins un écran contenant des éléments qui ne sont pas des widgets de l'interface utilisateur Android.
encounteredLoginScreen L'exploration robotique a rencontré au moins un écran de connexion probable.
performedGoogleLogin Robo s'est connecté avec Google.
iosException L'application iOS s'est écrasée avec une exception.
iosCrash L'application iOS s'est écrasée sans exception (par exemple tuée).
performedMonkeyActions Le robot crawl impliquait d'effectuer des actions de singe.
usedRoboDirective Robo Crawl a utilisé une directive Robo.
usedRoboIgnoreDirective Robo Crawl a utilisé une directive Robo pour ignorer un élément de l'interface utilisateur.
insufficientCoverage Robo n'a pas exploré certaines parties potentiellement importantes de l'application.
inAppPurchases Robo Crawl impliquait certains achats intégrés.
crashDialogError Une boîte de dialogue de crash a été détectée lors de l'exécution du test
uiElementsTooDeep La profondeur de l'élément d'interface utilisateur est supérieure au seuil
blankScreen Un écran vide est trouvé dans l'exploration du Robo
overlappingUiElements Des éléments d'interface utilisateur qui se chevauchent se trouvent dans l'analyse Robo
unityException Une exception Unity non interceptée a été détectée (celles-ci ne font pas planter les applications).
deviceOutOfMemory Un périphérique manquant de mémoire a été détecté
logcatCollectionError Problèmes détectés lors de la collecte du logcat
detectedAppSplashScreen Robo a détecté un écran de démarrage fourni par l'application (par rapport à l'écran de démarrage du système d'exploitation Android).

Catégorie

Catégories de problèmes.

Énumérations
unspecifiedCategory Catégorie non spécifiée par défaut. Ne pas utiliser. Pour la gestion des versions uniquement.
common Le problème n'est pas spécifique à un type de test particulier (par exemple, un crash natif).
robo Le problème est spécifique à Robo Run.

Calendrier des tests

Le calendrier des tests est décomposé pour connaître les phases.

Représentation JSON
{
  "testProcessDuration": {
    object (Duration)
  }
}
Des champs
testProcessDuration

object ( Duration )

Combien de temps il a fallu pour exécuter le processus de test.

  • En réponse : présent si défini précédemment.
  • Dans la demande de création/mise à jour : facultatif

Étape d'exécution de l'outil

Étape d'outil générique à utiliser pour les binaires que nous ne prenons pas explicitement en charge. Par exemple : exécuter cp pour copier des artefacts d’un emplacement à un autre.

Représentation JSON
{
  "toolExecution": {
    object (ToolExecution)
  }
}
Des champs
toolExecution

object ( ToolExecution )

Une exécution d'outil.

  • En réponse : présent si défini par la demande de création/mise à jour
  • Dans la demande de création/mise à jour : facultatif

Multi-étapes

Détails lorsque plusieurs étapes sont exécutées avec la même configuration en tant que groupe.

Représentation JSON
{
  "primaryStepId": string,
  "multistepNumber": integer,
  "primaryStep": {
    object (PrimaryStep)
  }
}
Des champs
primaryStepId

string

ID d'étape de l'étape principale (originale), qui peut être cette étape.

multistepNumber

integer

Int unique donné à chaque étape. Va de 0 (inclus) au nombre total d’étapes (exclus). L'étape principale est 0.

primaryStep

object ( PrimaryStep )

Présent s’il s’agit d’une étape principale (originale).

Étape primaire

Stocke l’état des tests cumulatifs de plusieurs étapes exécutées en groupe et le résultat de chaque étape individuelle.

Représentation JSON
{
  "rollUp": enum (OutcomeSummary),
  "individualOutcome": [
    {
      object (IndividualOutcome)
    }
  ]
}
Des champs
rollUp

enum ( OutcomeSummary )

État du test cumulatif de plusieurs étapes exécutées avec la même configuration en tant que groupe.

individualOutcome[]

object ( IndividualOutcome )

ID de l’étape et résultat de chaque étape individuelle.

Résultat individuel

ID d’étape et résultat de chaque étape individuelle exécutée en groupe avec d’autres étapes avec la même configuration.

Représentation JSON
{
  "stepId": string,
  "outcomeSummary": enum (OutcomeSummary),
  "multistepNumber": integer,
  "runDuration": {
    object (Duration)
  }
}
Des champs
stepId

string

outcomeSummary

enum ( OutcomeSummary )

multistepNumber

integer

Int unique donné à chaque étape. Va de 0 (inclus) au nombre total d’étapes (exclus). L'étape principale est 0.

runDuration

object ( Duration )

Combien de temps il a fallu pour que cette étape s'exécute.

Méthodes

accessibilityClusters

Répertorie les clusters d'accessibilité pour une étape donnée

Peut renvoyer l’un des codes d’erreur canoniques suivants :

  • PERMISSION_DENIED - si l'utilisateur n'est pas autorisé à lire le projet
  • INVALID_ARGUMENT - si la requête est mal formée
  • FAILED_PRECONDITION - si un argument dans la requête s'avère invalide ; par exemple

create

Crée une étape.

get

Obtient un pas.

getPerfMetricsSummary

Récupère un PerfMetricsSummary.

list

Répertorie les étapes d'une exécution donnée.

patch

Met à jour une étape existante avec l’entité partielle fournie.

publishXunitXmlFiles

Publiez des fichiers XML sur une étape existante.