REST Resource: projects.histories.executions.steps

Zasób: Step

Krok reprezentuje pojedynczą operację wykonywaną w ramach wykonania. Etap może odzwierciedlić wykonanie narzędzia ( np. wykonanie testu uruchamiającego testy lub kompilatora).

Kroki mogą się nakładać (na przykład 2 kroki mogą mieć ten sam czas rozpoczęcia, jeśli niektóre operacje są wykonywane równolegle).

Oto przykład. Weźmy pod uwagę, że w ramach ciągłej kompilacji wykonywany jest test uruchamiający się dla każdej iteracji. Przepływ pracy wygląda tak: – użytkownik tworzy wykonanie „Execution o identyfikatorze 1” – użytkownik tworzy element TestExecutionStep o identyfikatorze 100 na potrzeby wykonania 1 – użytkownik zaktualizuje TestExecutionStep o identyfikatorze 100, aby dodać nieprzetworzony log XML, a usługa analizuje logi XML i zwraca element TestExecutionStep ze zaktualizowanymi wynikami TestResult(s). – użytkownik zaktualizował stan TestExecutionStep o identyfikatorze 100 na COMPLETE

Krok może być aktualizowany, dopóki jego stan nie zostanie ustawiony na ZAKOŃCZONO, co spowoduje jego zmianę na stałe.

Zapis 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.
}
Pola
stepId

string

Unikalny identyfikator w ramach wykonania tego kroku.

Zwraca wartość Niepoprawny błąd – jeśli to pole zostało ustawione lub zastąpione przez element wywołujący.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu utworzenia/aktualizacji: nigdy nie ustawiono
creationTime

object (Timestamp)

Czas utworzenia kroku.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu utworzenia/aktualizacji: nigdy nie ustawiono
completionTime

object (Timestamp)

Czas, kiedy stan kroku miał być ukończony.

Ta wartość zostanie ustawiona automatycznie po zmianie stanu na UKOŃCZONO.

  • W odpowiedzi: ustaw, jeśli stan wykonania to COMPLETE (Zakończone).
  • W żądaniu utworzenia/aktualizacji: nigdy nie ustawiono
name

string

Krótka, zrozumiała dla człowieka nazwa wyświetlana w UI. Maksymalnie 100 znaków. Na przykład: Czysta kompilacja

Gdy utworzysz nowy krok, zostanie zwrócony stan PRECondition_FAILED, jeśli nazwa i wartość parametru są takie same jak w istniejącym kroku. Jeśli 2 kroki odpowiadają podobnemu działaniu, ale mają różne wartości wymiarów, powinny mieć taką samą nazwę. Jeśli np. ten sam zestaw testów jest uruchamiany na 2 różnych platformach, oba kroki powinny mieć taką samą nazwę.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu utworzenia: zawsze ustawiane
  • W żądaniu aktualizacji: nigdy nie ustawiono
description

string

Opis tego narzędzia Na przykład: mvn clean package -D skipTests=true

  • W odpowiedzi: występuje, jeśli jest ustawiona przez żądanie utworzenia/aktualizacji
  • W żądaniu utworzenia/aktualizacji: opcjonalne
state

enum (State)

Stan początkowy to IN_PROGRESS. Jedyne zmiany stanu prawnego to * IN_PROGRESS -> ZAKOŃCZ

Jeśli zostanie wysłane nieprawidłowe przeniesienie, zostanie zwrócony stan PRECondition_FAILED.

Można utworzyć krok ze stanem ustawionym na ZAKOŃCZONO. Stan można ustawić na ZAKOŃCZ tylko raz. Jeśli stan zostanie ustawiony na COMPLETE kilka razy, zostanie zwrócony warunek PRECondition_FAILED.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu utworzenia/aktualizacji: opcjonalne
outcome

object (Outcome)

klasyfikacja wyniku, np. SUKCES lub NIEPOWODZENIE;

  • W odpowiedzi: występuje, jeśli jest ustawiona przez żądanie utworzenia/aktualizacji
  • W żądaniu utworzenia/aktualizacji: opcjonalne
hasImages

boolean

Określa, czy wynik tego kroku to obrazy, których miniatury można pobrać z funkcją miniatur.list.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu utworzenia/aktualizacji: nigdy nie ustawiono
labels

map (key: string, value: string)

Przypadkowe pary klucz/wartość podane przez użytkownika, powiązane z danym krokiem.

Użytkownicy są odpowiedzialni za zarządzanie przestrzenią nazw klucza w taki sposób, by klucze nie doszło do zderzenia przypadkowo.

Jeśli liczba etykiet przekracza 100 lub dowolny z kluczy bądź wartości przekracza 100 znaków, zostanie zwrócony błąd Niepoprawny_argument.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: opcjonalnie; każda nowa para klucz-wartość zostanie dodana do mapy, a każda nowa wartość istniejącego klucza spowoduje zaktualizowanie wartości tego klucza

Obiekt zawierający listę par "key": value. Przykład: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

dimensionValue

map (key: string, value: string)

Jeśli w wykonaniu zawierającym ten krok ustawiono wymiar wymiar_definition, w tym polu można określić wartości wymiarów.

Klucze muszą dokładnie pasować do definicji parametrudimension_definition wykonania.

Jeśli np. wykonanie obejmuje funkcję dimension_definition = ['attempt', 'device'], to w danym kroku musisz określić wartości tych wymiarów, np. dimensionValue = ['attempt': '1', 'device': 'Nexus 6']

Jeśli krok nie należy do żadnego wymiaru macierzy, wartość tego wymiaru powinna być pustym ciągiem znaków. Jeśli na przykład jeden z testów zostanie wykonany przez biegacza, który nie obsługuje ponownych prób, ten krok może mieć atrybut dimensionValue = ['attempt': '', 'device': 'Nexus 6']

Jeśli krok nie jest związany z żadnymi wymiarami macierzy, może pozostawać nieskonfigurowana.

Jeśli któregoś z kluczy nie ma w definicji wymiaru w wykonaniu, zostanie zwrócony warunek PRECondition_FAILED.

Jeśli inny krok w tym wykonaniu ma już taką samą nazwę i wartość wymiarValue, ale różni się od innych pól danych, np. gdy pole kroku jest inne, zostanie zwrócony warunek PRECondition_FAILED.

Jeśli ustawiono wartość levelValue, a wykonanie zawiera definitywną definicję wymiaru, która nie jest określona jako jeden z kluczy, zostanie zwrócony warunek PRECondition_FAILED.

  • W odpowiedzi: obecne, jeśli jest ustawione przez utworzenie
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: nigdy nie ustawiono

Obiekt zawierający listę par "key": value. Przykład: { "name": "wrench", "mass": "1.3kg", "count": "3" }.

runDuration

object (Duration)

Czas trwania tego kroku.

Jeśli zasada nie jest skonfigurowana, w przypadku wartości COMPLETETime dla kroku jest ustawiona różnica między createTime i completeTime. W niektórych przypadkach można ustawić tę wartość oddzielnie. Jeśli na przykład podczas tworzenia kroku reprezentowana przez niego operacja znajduje się w kolejce na kilka minut przed wykonaniem, lepiej nie uwzględniać czasu w kolejce w parametrze runDuration.

Wartość PRECondition_FAILED zostanie zwrócona, jeśli ktoś spróbuje ustawić wartość runDuration w kroku, który ma już ustawione to pole.

  • W odpowiedzi: obecne, jeśli wcześniej ustawiono; zawsze obecna na COMPLETE krok
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: opcjonalne
deviceUsageDuration

object (Duration)

Ilość zasobu urządzenia używanego do przeprowadzenia testu.

Jest to wykorzystanie urządzenia w celach rozliczeniowych, które różni się od wartości runDuration (na przykład użycie urządzenia nie będzie obciążane opłatami za awarie infrastruktury).

Wartość PRECondition_FAILED zostanie zwrócona, jeśli zostanie podjęta próba ustawienia parametru device_usage w kroku, który ma już ustawione to pole.

  • W odpowiedzi: obecne, jeśli wcześniej ustawiono.
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: opcjonalne
multiStep

object (MultiStep)

Szczegółowe informacje o uruchamianiu wielu kroków z tą samą konfiguracją co grupa. Te informacje pozwolą Ci ustalić, do której grupy należy dany krok. Określa też „podstawowy krok” grup który powoduje indeksowanie wszystkich członków grupy.

  • W odpowiedzi: obecne, jeśli wcześniej ustawiono.
  • W żądaniu tworzenia: opcjonalnie ustaw ten krok więcej niż raz.
  • W żądaniu aktualizacji: opcjonalne

Pole sumy step.

step może mieć tylko jedną z tych wartości:

testExecutionStep

object (TestExecutionStep)

Wykonanie uruchomionego testu.

toolExecutionStep

object (ToolExecutionStep)

Wykonanie narzędzia (używane w przypadku czynności, których nie obsługujemy).

Etap wykonywania testu

Krok reprezentujący wykonywanie testów.

Akceptuje pliki XML typu ant-junit, które są analizowane przez usługę jako uporządkowane wyniki testu. Ścieżki do plików XML są aktualizowane w celu dołączenia większej liczby plików, ale nie można ich usunąć.

Użytkownicy mogą też dodawać wyniki testu ręcznie za pomocą pola test_result.

Zapis JSON
{
  "testSuiteOverviews": [
    {
      object (TestSuiteOverview)
    }
  ],
  "toolExecution": {
    object (ToolExecution)
  },
  "testIssues": [
    {
      object (TestIssue)
    }
  ],
  "testTiming": {
    object (TestTiming)
  }
}
Pola
testSuiteOverviews[]

object (TestSuiteOverview)

Lista przeglądów zestawu testów. Może zostać przeanalizowany z dziennika XML xUnit przez serwer lub przesłany bezpośrednio przez użytkownika. Odwołania należy wywoływać tylko wtedy, gdy zestawy testowe zostaną w pełni przeanalizowane lub przesłane.

Maksymalna dozwolona liczba przeglądów pakietu testowego na krok to 1000.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: nigdy (zamiast tego użyj niestandardowej metody publishXunitXmlFiles)
toolExecution

object (ToolExecution)

Reprezentuje wykonanie uruchomionego testu.

Kod wyjścia tego narzędzia będzie używany do określenia, czy test został zaliczony.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu utworzenia/aktualizacji: opcjonalne
testIssues[]

object (TestIssue)

Problemy zaobserwowane podczas wykonywania testu.

Jeśli na przykład testowana aplikacja mobilna uległa awarii podczas testu, to w tym miejscu można zapisać komunikat o błędzie i zrzut stosu, aby ułatwić debugowanie.

  • W odpowiedzi: występuje, jeśli jest ustawiona przez utworzenie lub aktualizację
  • W żądaniu utworzenia/aktualizacji: opcjonalne
testTiming

object (TestTiming)

Podział czasu wykonywania testu.

  • W odpowiedzi: występuje, jeśli jest ustawiona przez utworzenie lub aktualizację
  • W żądaniu utworzenia/aktualizacji: opcjonalne

Wykonanie narzędzia

Wykonanie dowolnego narzędzia. Może to być uruchomienie testów albo narzędzie kopiujące artefakty lub wdrażające kod.

Zapis JSON
{
  "commandLineArguments": [
    string
  ],
  "toolLogs": [
    {
      object (FileReference)
    }
  ],
  "exitCode": {
    object (ToolExitCode)
  },
  "toolOutputs": [
    {
      object (ToolOutputReference)
    }
  ]
}
Pola
commandLineArguments[]

string

Pełny tokenizowany wiersz poleceń zawierający nazwę programu (odpowiednik argumentu argv w programie C).

  • W odpowiedzi: występuje, jeśli jest ustawiona przez żądanie utworzenia
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: nigdy nie ustawiono
toolLogs[]

object (FileReference)

Odwołania do dzienników w postaci zwykłego tekstu zwracają wykonanie narzędzia.

To pole można ustawić przed zamknięciem narzędzia, co umożliwi dostęp do podglądu na żywo logów, gdy narzędzie jest uruchomione.

Maksymalna dozwolona liczba logów narzędzia na krok to 1000.

  • W odpowiedzi: występuje, jeśli jest ustawiona przez żądanie utworzenia/aktualizacji
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: opcjonalne; każda podana wartość zostanie dodana do istniejącej listy.
exitCode

object (ToolExitCode)

Kod wyjścia uruchomienia narzędzia. To pole zostanie ustawione po zamknięciu narzędzia.

  • W odpowiedzi: występuje, jeśli jest ustawiona przez żądanie utworzenia/aktualizacji
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: opcjonalne. Jeśli parametr exitCode jest już ustawiony, zostanie zwrócony błąd FAILED_PREcondition.
toolOutputs[]

object (ToolOutputReference)

Odniesienia do nieprzezroczystych plików w dowolnym formacie wygenerowanych przez wykonanie narzędzia.

Maksymalna dozwolona liczba wyników wyjściowych narzędzia na krok to 1000.

  • W odpowiedzi: występuje, jeśli jest ustawiona przez żądanie utworzenia/aktualizacji
  • W żądaniu tworzenia: opcjonalne
  • W żądaniu aktualizacji: opcjonalne; każda podana wartość zostanie dodana do istniejącej listy.

Kod wyjścia narzędzia

Wyjdź z kodu uruchomionego przez narzędzie.

Zapis JSON
{
  "number": integer
}
Pola
number

integer

Kod wyjścia uruchomienia narzędzia. Wartość 0 oznacza, że wykonanie zostało wykonane.

  • W odpowiedzi: zawsze ustawione
  • W żądaniu utworzenia/aktualizacji: zawsze ustawiono

Problem testowy

Podczas wykonywania testu wykryto problem.

Zapis JSON
{
  "errorMessage": string,
  "stackTrace": {
    object (StackTrace)
  },
  "warning": {
    object (Any)
  },
  "severity": enum (Severity),
  "type": enum (Type),
  "category": enum (Category)
}
Pola
errorMessage

string

Krótka, zrozumiała dla człowieka wiadomość opisująca problem. Wymagane.

stackTrace
(deprecated)

object (StackTrace)

Wycofano, zamiast używać pól zrzutu stosu w określonych ostrzeżeniach.

warning

object (Any)

Komunikat ostrzegawczy z dodatkowymi informacjami o problemie. Właściwa wartość to zawsze wiadomość z adresu com.google.devtools.toolresults.v1.warnings

severity

enum (Severity)

Stopień problemu. Wymagane.

type

enum (Type)

Typ problemu. Wymagane.

category

enum (Category)

Kategoria problemu. Wymagane.

Dowolna

Any zawiera dowolny zserializowany komunikat bufora protokołu wraz z adresem URL, który opisuje typ zserializowanej wiadomości.

Biblioteka Protobuf umożliwia pakowanie/rozpakowywanie dowolnych wartości w postaci funkcji użytkowych lub dodatkowych wygenerowanych metod dowolnego typu.

Przykład 1. Zapakuj i rozpakuj wiadomość w języku C++.

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

Przykład 2. Spakuj i rozpakuj wiadomość w języku Java.

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

Przykład 3. Zapakuj i rozpakuj wiadomość w Pythonie.

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

Przykład 4. Pakowanie i rozpakowywanie wiadomości w języku Go

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

Metody pakietu udostępniane przez bibliotekę protobuf będą domyślnie używać „type.googleapis.com/full.type.name” , a metody rozpakowywania korzystają z pełnej i jednoznacznej nazwy typu po ostatnim znaku „/” w typie adresu URL, np. „foo.bar.com/x/y.z” zwróci nazwę typu „y.z”.

JSON

Reprezentacja wartości Any w formacie JSON to standardowa reprezentacja umieszczonej wiadomości w postaci zdeserializowanej wiadomości i dodatkowe pole @type, które zawiera adres URL typu. Przykład:

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

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

Jeśli typ umieszczonej wiadomości jest dobrze znany i ma niestandardową reprezentację JSON, zostanie w niej umieszczona pole value, które oprócz pola @type zawiera niestandardowy plik JSON. Przykład (dla wiadomości google.protobuf.Duration):

{
  "@type": "type.googleapis.com/google.protobuf.Duration",
  "value": "1.212s"
}
Zapis JSON
{
  "typeUrl": string,
  "value": string
}
Pola
typeUrl

string

URL/nazwa zasobu, która jednoznacznie identyfikuje typ zserializowanego komunikatu bufora protokołu. Ten ciąg musi zawierać co najmniej jeden znak „/” znaku. Ostatni segment ścieżki adresu URL musi zawierać pełną nazwę danego typu (np. path/google.protobuf.Duration). Nazwa powinna mieć formę kanoniczną (np. przedrostek „.” nie jest akceptowany).

W praktyce zespoły zwykle wstępnie kompilują do pliku binarnego wszystkie typy, których będą używać w kontekście „Dowolne”. Jednak dla adresów URL, które używają schematu http, https lub nie mają schematu, można opcjonalnie skonfigurować serwer typów, który mapuje typy adresów URL na definicje wiadomości w następujący sposób:

  • Jeśli nie podano schematu, przyjmuje się, że chodzi o https.
  • Żądanie HTTP GET z adresu URL musi zwracać wartość google.protobuf.Type w formacie binarnym lub powodować błąd.
  • Aplikacje mogą zapisywać wyniki wyszukiwania w pamięci podręcznej na podstawie adresu URL lub wstępnie skompilować je do pliku binarnego, aby uniknąć wyszukiwania. Dlatego w przypadku zmian typów należy zachować zgodność plików binarnych. (Używaj nazw typów z obsługą wersji, aby zarządzać zmianami powodującymi niezgodność).

Uwaga: ta funkcja nie jest obecnie dostępna w oficjalnej wersji protokołu i nie jest używana w przypadku adresów URL zaczynających się od type.googleapis.com.

Schematy inne niż http i https (lub pusty schemat) mogą być używane z określoną semantyką implementacji.

value

string (bytes format)

Musi to być prawidłowy zserializowany bufor protokołu określonego powyżej typu.

Ciąg zakodowany w formacie base64.

Poziom ważności

Poziomy ważności problemów.

Wartości w polu enum
unspecifiedSeverity Domyślna nieokreślona ważność. Nie używać. Tylko na potrzeby obsługi wersji.
info Problem nie krytyczny, ponieważ dostarcza użytkownikom informacje o przebiegu testu.
suggestion Problem nie krytyczny, ze wskazówkami na temat poprawy komfortu testowania, np. z zaleceniem użycia pętli gier.
warning Potencjalnie krytyczny problem.
severe Problem krytyczny.

Typ

Typy problemów.

Wartości w polu enum
unspecifiedType Domyślny nieokreślony typ. Nie używać. Tylko na potrzeby obsługi wersji.
fatalException Problem jest wyjątkiem krytycznym.
nativeCrash Problem to awaria natywna.
anr Problem to awaria ANR.
unusedRoboDirective Problem to nieużywana dyrektywa robo.
compatibleWithOrchestrator Issue to sugestia użycia aplikacji administracyjnego.
launcherActivityNotFound Problem ze znalezieniem aktywności programu uruchamiającego
startActivityNotFound Problem z rozwiązywaniem przekazanego przez użytkownika zamiaru rozpoczęcia działania
incompleteRoboScriptExecution Skrypt Robo nie został w pełni wykonany.
completeRoboScriptExecution Skrypt Robo został w pełni wykonany.
failedToInstall Nie udało się zainstalować pliku APK.
nonSdkApiUsageViolation Aplikacja uzyskała dostęp do interfejsu API innego niż SDK.
nonSdkApiUsageReport Aplikacja uzyskała dostęp do interfejsu API innego niż SDK (nowy raport szczegółowy)
encounteredNonAndroidUiWidgetScreen Indeksowanie Robo napotkało co najmniej 1 ekran z elementami, które nie są widżetami interfejsu Androida.
encounteredLoginScreen Indeksowanie Robo napotkało co najmniej 1 prawdopodobny ekran logowania.
performedGoogleLogin Robo zalogował się przez Google.
iosException Aplikacja na iOS uległa awarii z wyjątkiem.
iosCrash Aplikacja na iOS uległa awarii bez wyjątku (np. została zatrzymana).
performedMonkeyActions Indeksowanie Robo polegało na wykonywaniu pewnych czynności.
usedRoboDirective Podczas indeksowania Robo użyto dyrektywy Robo.
usedRoboIgnoreDirective Indeksowanie Robo używa dyrektywy Robo do zignorowania elementu interfejsu.
insufficientCoverage Robot Robo nie zindeksował niektórych potencjalnie ważnych części aplikacji.
inAppPurchases Indeksowanie Robo obejmowało zakupy w aplikacji.
crashDialogError Podczas wykonywania testu wykryto okno awarii
uiElementsTooDeep Głębokość elementu interfejsu przekracza próg
blankScreen Podczas indeksowania Robo znaleziono pusty ekran
overlappingUiElements Indeksowanie Robo znaleziono nakładające się elementy interfejsu
unityException Wykryto nieobsłużony wyjątek Unity (nie powodują one awarii aplikacji).
deviceOutOfMemory Wykryto, że na urządzeniu brakuje pamięci
logcatCollectionError Wykryto problemy podczas pobierania dzienników
detectedAppSplashScreen Robo wykrył ekran powitalny dostarczony przez aplikację (w przeciwieństwie do ekranu powitalnego systemu operacyjnego Android).
assetIssue W tym teście wystąpił problem z zasobami.

Kategoria

Kategorie problemów.

Wartości w polu enum
unspecifiedCategory Domyślna nieokreślona kategoria. Nie używać. Tylko na potrzeby obsługi wersji.
common Problem nie dotyczy konkretnego rodzaju testowego (np. awaria natywna).
robo Problem dotyczy tylko uruchomienia Robo.

Czas testowania

Czas testowania jest podzielony na poszczególne fazy.

Zapis JSON
{
  "testProcessDuration": {
    object (Duration)
  }
}
Pola
testProcessDuration

object (Duration)

Czas trwania procesu testowania.

  • W odpowiedzi: obecne, jeśli wcześniej ustawiono.
  • W żądaniu utworzenia/aktualizacji: opcjonalne

Etap wykonywania narzędzia

Ogólny krok narzędzia używany w przypadku plików binarnych, których nie obsługujemy. Przykład: uruchomienie cp w celu skopiowania artefaktów z jednej lokalizacji do drugiej.

Zapis JSON
{
  "toolExecution": {
    object (ToolExecution)
  }
}
Pola
toolExecution

object (ToolExecution)

Wykonanie narzędzia.

  • W odpowiedzi: występuje, jeśli jest ustawiona przez żądanie utworzenia/aktualizacji
  • W żądaniu utworzenia/aktualizacji: opcjonalne

Wieloetapowe

Szczegółowe informacje o uruchamianiu wielu kroków z tą samą konfiguracją co grupa.

Zapis JSON
{
  "primaryStepId": string,
  "multistepNumber": integer,
  "primaryStep": {
    object (PrimaryStep)
  }
}
Pola
primaryStepId

string

Identyfikator kroku podstawowego (pierwotnego), którym może być ten krok.

multistepNumber

integer

Unikalna wartość int podana dla każdego kroku. Może mieć zakres od 0(włącznie) do łącznej liczby kroków(bez uwzględnienia). Krok podstawowy to 0.

primaryStep

object (PrimaryStep)

Widoczny, jeśli jest to krok podstawowy (pierwotny).

GłównyKrok

Sklepy zbierają stan testu wielu kroków przeprowadzonych jako grupa i wynik każdego z nich.

Zapis JSON
{
  "rollUp": enum (OutcomeSummary),
  "individualOutcome": [
    {
      object (IndividualOutcome)
    }
  ]
}
Pola
rollUp

enum (OutcomeSummary)

Podsumuj stan testu wielu kroków, które zostały uruchomione z tą samą konfiguracją co grupa.

individualOutcome[]

object (IndividualOutcome)

Identyfikator kroku i wynik każdego z nich.

Wynik indywidualny

Identyfikator kroku i wynik każdego pojedynczego kroku uruchomionego jako grupa z innymi krokami o tej samej konfiguracji.

Zapis JSON
{
  "stepId": string,
  "outcomeSummary": enum (OutcomeSummary),
  "multistepNumber": integer,
  "runDuration": {
    object (Duration)
  }
}
Pola
stepId

string

outcomeSummary

enum (OutcomeSummary)

multistepNumber

integer

Unikalna wartość int podana dla każdego kroku. Może mieć zakres od 0(włącznie) do łącznej liczby kroków(bez uwzględnienia). Krok podstawowy to 0.

runDuration

object (Duration)

Czas trwania tego kroku.

Metody

accessibilityClusters

Wyświetla listę klastrów ułatwień dostępu dla danego kroku

Może zwrócić dowolny z tych kanonicznych kodów błędów:

  • PERMISSION_DENIED – jeśli użytkownik nie ma uprawnień do odczytu projektu
  • INVALID_ARGUMENT – jeśli żądanie ma nieprawidłowy format
  • FAILED_PREcondition – jeśli argument w żądaniu jest nieprawidłowy; np.

create

Tworzy krok.

get

Zbiera krok.

getPerfMetricsSummary

Pobiera PerfMetricsSummary.

list

Zawiera listę kroków danego wykonania.

patch

Aktualizuje istniejący krok o dostarczony częściowy element.

publishXunitXmlFiles

Opublikuj pliki XML w istniejącym kroku.