Complete Allure provider in Go which doesn't overload the interface usage

Overview

allure-testify

Allure-Testify - проект, предоставляющий полноценный провайдер allure в go, без перегрузки интерфейса использования.
Проект начинался как форк от testify, но со временем обзавелся своим раннером и своими особенностями.

Other Languages README.md

Head of contents

Features

pkg/allure

Пакет, содержащий модель данных для Allure.
Полный список allure-объектов:

  • Attachment
  • Container
  • Label
  • Link
  • Parameter
  • Result
  • Step

Предоставление отдельного пакета позволяет кастомизировать работу с allure.
Подробно можно почитать тут.

pkg/provider.T

Враппер контекста теста (testing.T).
Основные преимущества и особенности:

  • Имеет свой раннер тестов (T.Run(testName string, test func(t *provider.T), tags ...string)), что позволяет использовать преимущества библиотеки testing.
  • Функциональность аналогов на других языках, без потери удобства и простоты использования.
  • Полностью интегрирован с allure. Ваши go-тесты еще никогда не были такими информативными!

Подробно можно почитать тут.

pkg/framework/runner

Пакет предоставляет функции для запуска тестовых структур (Suite) и отдельных тестов.
Тесты, запущенные с помощью этих функций по окончанию исполнения будут создавать allure отчет.
Подробно можно почитать тут.

pkg/framework/suite

Пакет предоставляет структуру Suite, в которой можно описывать тесты, группируя их в тест-комплекты.
Это может быть удобным, если у вас много разных тестов и вам сложно в них ориентироваться, без дополнительных "уровней вложения" вызовов тестов.
Подробно можно почитать тут.

Getting Started

  1. Установить пакет
go get github.com/koodeex/allure-testify
  1. Если Вы уже используете testify, то нужно заменить импорты
package tests

import (
	"github.com/stretchr/testify/suite"
)

на

package tests

import (
	"github.com/koodeex/allure-testify/pkg/framework/suite"
)
  1. Заменить функции
  • SetupSuite -> BeforeAll
  • SetupTest -> BeforeEach
  • TearDownTest -> AfterEach
  • TearDownSuite -> AfterAll
  1. Запустить go test!

Demo

Demo Installation

  git clone https://github.com/koodeex/allure-testify.git

Run Examples

make demo

How to use

Installation

go get github.com/koodeex/allure-testify

Configure Behavior

Путь до allure отчетов собирается из двух глобальных переменных $ALLURE_OUTPUT_FOLDER/$ALLURE_OUTPUT_PATH

  • ALLURE_OUTPUT_FOLDER - это имя папки, в которую будут складываться allure-отчеты (по умолчанию - allure-results).
  • ALLURE_OUTPUT_PATH - это путь, в котором будет создана ALLURE_OUTPUT_FOLDER (по умолчанию это корневая папка запуска тестов).

Так же, можно указать несколько глобальных конфигураций, для интеграции с вашей TMS или Task Tracker:

  • ALLURE_ISSUE_PATTERN - Указывает урл-паттерн для ваших Issues. Не имеет значения по умолчанию. Обязательно должен содержать %s.

Если ALLURE_ISSUE_PATTERN не задан, ссылка будет читаться целиком.

Пример:

package provider_demo

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/runner"
	"github.com/koodeex/allure-testify/pkg/provider"
)

func TestSampleDemo(t *testing.T) {
	runner.RunTest(t, "Just Link", func(t *provider.T) {
		t.SetIssue("https://pkg.go.dev/github.com/stretchr/testify")
	})

	runner.RunTest(t, "With Pattern", func(t *provider.T) {
		_ = os.Setenv("ALLURE_ISSUE_PATTERN", "https://pkg.go.dev/github.com/stretchr/%s")
		t.SetIssue("testify")
	})
}
  • ALLURE_TESTCASE_PATTERN - Указывает урл-паттерн для ваших TestCases. Не имеет значения по умолчанию. Обязательно должен содержать %s.

Если ALLURE_TESTCASE_PATTERN не задан, ссылка будет читаться целиком.

Пример:

package provider_demo

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/runner"
	"github.com/koodeex/allure-testify/pkg/provider"
)

func TestSampleDemo(t *testing.T) {
	runner.RunTest(t, "Just Link", func(t *provider.T) {
		t.SetTestCase("https://pkg.go.dev/github.com/stretchr/testify")
	})

	runner.RunTest(t, "With Pattern", func(t *provider.T) {
		_ = os.Setenv("ALLURE_TESTCASE_PATTERN", "https://pkg.go.dev/github.com/stretchr/%s")
		t.SetTestCase("testify")
	})
}
  • ALLURE_LAUNCH_TAGS - Прокидывает список тэгов, которые будут применены к каждому тесту по умолчанию. Не имеет значения по умолчанию.

Совет: ALLURE_LAUNCH_TAGS - очень удобен в использовании с CI/CD. Например, в нем можно определять группы тестов по вашим ci-jobs или же прокидывать имя ветки.

Configure Test

  1. Используя пакет runner:
package provider_demo

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/runner"
	"github.com/koodeex/allure-testify/pkg/provider"
)

func TestSampleDemo(t *testing.T) {
	runner.RunTest(t, "My test", func(t *provider.T) {
		// Test Body
	})
}
  1. Используя декларирование контекста TestRunner:
package provider_demo

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/runner"
)

func TestOtherSampleDemo(realT *testing.T) {
	r := runner.NewTestRunner(realT)
	r.Run("My test", func(t *provider.T) {
		// Test Body
	})
}

Второй вариант позволит использовать BeforeEach/AfterEach:

package provider_demo

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/runner"
)

func TestOtherSampleDemo(realT *testing.T) {
	r := runner.NewTestRunner(realT)
	r.WithBeforeEach(func(t *provider.T) {
		// Before Each body 
	})
	r.WithAfterEach(func(t *provider.T) {
		// After Each body
	})
	r.Run("My test", func(t *provider.T) {
		// Test Body
	})
}

Так же сохранена особенность библиотеки testing, позволяющая запускать тесты из других тестов:

package provider_demo

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/runner"
	"github.com/koodeex/allure-testify/pkg/provider"
)

func TestOtherSampleDemo(realT *testing.T) {
	r := runner.NewTestRunner(realT)
	r.Run("My test", func(t *provider.T) {
		// Test Body
		t.WithBeforeTest(func(t *provider.T) {
			// inner Before Each body
		})
		t.WithAfterTest(func(t *provider.T) {
			// inner After Each body
		})
		t.Run("My test", func(t *provider.T) {
			// inner test body
		})
	})
}

Configure Suite

Чтобы группировать тесты в тест-комплекты, необходимо:

  1. объявить структуру, методами которой будут ваши тесты
package suite_demo

type DemoSuite struct {
}
  1. расширить объявленную структуру структурой suite.Suite
package suite_demo

import "github.com/koodeex/allure-testify/pkg/framework/suite"

type DemoSuite struct {
	suite.Suite
}
  1. описать тесты
package suite_demo

import "github.com/koodeex/allure-testify/pkg/framework/suite"

type DemoSuite struct {
	suite.Suite
}

func (s *DemoSuite) TestSkip() {
	s.Epic("Demo")
	s.Feature("Suites")
	s.Title("My first test")
	s.Description(`
		This test will be attached to the suite DemoSuite`)
}
  1. Запустить тесты.

Для этого нужно описать функцию, которая запустить Ваш тест и вызвать runner.RunSuite:

package suite_demo

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/runner"
	"github.com/koodeex/allure-testify/pkg/framework/suite"
)

type DemoSuite struct {
	suite.Suite
}

func (s *DemoSuite) TestSkip() {
	s.Epic("Demo")
	s.Feature("Suites")
	s.Title("My first test")
	s.Description(`
		This test will be attached to the suite DemoSuite`)
}

func TestSkipDemo(t *testing.T) {
	t.Parallel()
	runner.RunSuite(t, new(SkipDemoSuite))
}

И запустить тесты с помощью go test

go test ${TEST_PATH}

Тогда в корневой папке тестов по окончанию прогона будет проинициализирована папка allure-results, содержащая в себе allure-отчеты.

Configure Your Report

Allure-Testify предоставляет широкие возможности взаимодействия с allure.
Большинство действий осуществляется с помощью структуры provider.T, являющейся оберткой над testing.T.
Так же структура suite.Suite позволяет использовать интерфейс Suite для взаимодействия с allure-report.

Test Info

Полный список поддерживаемых методов для проставления информации о методе:

  • *T.Title
  • *T.Description

Note: По умолчанию имя теста ставится в соответствии с именем функции теста.

Labels

Полный список поддерживаемых лейблов:

  • *T.Epic
  • *T.Feature
  • *T.Story
  • *T.ID
  • *T.Severity
  • *T.ParentSuite
  • *T.Suite
  • *T.SubSuite
  • *T.Package
  • *T.Thread
  • *T.Host
  • *T.Tag
  • *T.Framework
  • *T.Language
  • *T.Owner
  • *T.Lead

Более подробно про методы можно почитать здесь

Default label values
Label Default Value
ParentSuite - Для suite.Suite ставится имя функции, в которой suite был запущен.

- Для независимых тестов - по умолчанию не ставится, однако если тест был вызван внутри другого теста, в этом лейбле будет указан тест, запустивший родительский для текущего тест.
Suite - Для suite.Suite ставится имя suite, которому текущий тест принадлежит.

- Для независимого теста - имя теста - родителя (из которого был запущен текущий тест).
Package Пакет, в котором были запущены тесты
Thread Ставится Result.FullName [1].
Host os.Host()
Framework [email protected]
Language runtime.Version()

NOTES: [1] - Это Knowing Issue - в golang пока не представляется целесообразным (или возможным адекватными способами) пытаться достать имя текущей goroutine, как и невозможно задать ей имя.


Links

Полный список поддерживаемых действий:

  • *T.SetIssue
  • *T.SetTestCase
  • *T.Link

Более подробно про методы можно почитать здесь.

Про переменные, с которыми можно взаимодействовать для упрощения работы было указано выше.

Allure Steps

Полный список поддерживаемых действий:

  • *T.Step - добавляет к отчету переданный Step.
  • *T.NewStep - создает новый пустой Step с переданным именем и добавляет его к отчету.
  • *T.InnerStep - добавляет к отчету переданный Step, проставив переданный ParentStep как родительский.
  • *T.NewInnerStep - создает новый пустой Step с переданным именем и добавляет его к отчету, проставляет переданный ParentStep как родительский и добавляет его к отчету.
  • *T.WithStep - оборачивает переданную в f функцию переданным Step и добавляет Step к отчету.
  • *T.WithNewStep - создает новый Step, оборачивает переданную в f функцию созданным Step и добавляет его к отчету.

Nested-Only Functions

  • *T.AddAttachmentToNested - добавляет к вложенному шагу Attachment
  • *T.AddParameterToNested - добавляет к вложенному шагу Parameter
  • *T.AddParametersToNested - добавляет к вложенному шагу все элементы массива Parameter
  • *T.AddNewParameterToNested - инициализирует новый Parameter и добавляет его к вложенному шагу
  • *T.AddNewParametersToNested - инициализирует новый массив Parameter и добавляет все его элементы к вложенному шагу

Note: Функции с суффиксом ToNested могут быть вызваны ТОЛЬКО внутри функции WithStep/WithNewStep. В противном случае ничего не произойдет.

Allure Attachments

Полный список поддерживаемых действий:

  • *T.Attachment - добавляет к текущему тесту Attachment

Test Behaviour

Полный список поддерживаемых действий:

  • *T.Skip - пропускает текущий тест. В статус отчета будет указан переданный текст.
  • *T.Errorf - помечает выбранный тест, как Failed. В статус отчета будет прикреплен переданный текст,
  • *T.XSkip - пропускает выбранный тест, если в процессе его исполнения вызывается *T.Error/*T.Errorf (например, падает assert)

Forward to suite.Suite

Полный список поддерживаемых действий:

  • Test Info
    • *Suite.Title
    • *Suite.Description
  • Allure Labels
    • *Suite.Epic
    • *Suite.Feature
    • *Suite.Story
    • *Suite.ID
    • *Suite.Severity
    • *Suite.ParentSuite
    • *Suite.Suite
    • *Suite.SubSuite
    • *Suite.Package
    • *Suite.Thread
    • *Suite.Host
    • *Suite.Tag
    • *Suite.Framework
    • *Suite.Language
    • *Suite.Owner
    • *Suite.Lead
  • Allure Links
    • *Suite.SetIssue
    • *Suite.SetTestCase
    • *Suite.Link
  • Allure Steps
    • *Suite.Step
    • *Suite.NewStep
    • *Suite.InnerStep
    • *Suite.InnerNewStep
    • *Suite.WithStep
    • *Suite.WithNewStep
  • Nested Only Functions
    • *Suite.AddNestedAttachment
    • *Suite.AddParameterToNested
    • *Suite.AddParametersToNested
    • *Suite.AddNewParameterToNested
    • *Suite.AddNewParametersToNested
  • Allure Attachments
    • *Suite.Attachment

Documentation

Подробная документация по каждому публичному пакету может быть найдена в каталоге этого пакета.

Examples

Test with nested steps:

Код теста:

package examples

import (
	"github.com/koodeex/allure-testify/pkg/framework/suite"
)

type StepTreeDemoSuite struct {
	suite.Suite
}

func (s *StepTreeDemoSuite) TestInnerSteps() {
	s.Epic("Demo")
	s.Feature("Inner Steps")
	s.Title("Simple Nesting")
	s.Description(`
		Step A is parent step for Step B and Step C
		Call order will be saved in allure report
		A -> (B, C)`)

	s.Tags("Steps", "Nesting")

	s.WithNewStep("Step A", func() {
		s.NewStep("Step B")
		s.NewStep("Step C")
	})
}

Вывод в Allure:

Test with Attachment

Код теста:

package examples

import (
	"encoding/json"

	"github.com/koodeex/allure-testify/pkg/allure"
	"github.com/koodeex/allure-testify/pkg/framework/suite"
)

type JSONStruct struct {
	Message string `json:"message"`
}

type AttachmentTestDemoSuite struct {
	suite.Suite
}

func (s *AttachmentTestDemoSuite) TestAttachment() {
	s.Epic("Demo")
	s.Feature("Attachments")
	s.Title("Test Attachments")
	s.Description(`
		Test's test body and all steps inside can contain attachments`)

	s.Tags("Attachments", "BeforeAfter", "Steps")

	attachmentText := `THIS IS A TEXT ATTACHMENT`
	s.Attachment(allure.NewAttachment("Text Attachment if TestAttachment", allure.Text, []byte(attachmentText)))

	step := allure.NewSimpleStep("Step A")
	var ExampleJson = JSONStruct{"this is JSON message"}
	attachmentJSON, _ := json.Marshal(ExampleJson)
	step.Attachment(allure.NewAttachment("Json Attachment for Step A", allure.JSON, attachmentJSON))
	s.Step(step)
}

Вывод в Allure:

Run few parallel suites

Код теста:

package examples

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/suite"
)

type TestRunningDemoSuite struct {
	suite.Suite
}

func (s *TestRunningDemoSuite) TestBeforesAfters() {
	t := s.T()
	t.Parallel()
	// use RunInner to run suite of tests
	s.RunSuite(t, new(BeforeAfterDemoSuite))
}

func (s *TestRunningDemoSuite) TestFails() {
	t := s.T()
	t.Parallel()
	s.RunSuite(t, new(FailsDemoSuite))
}

func (s *TestRunningDemoSuite) TestLabels() {
	t := s.T()
	t.Parallel()
	s.RunSuite(t, new(LabelsDemoSuite))
}

func TestRunDemo(t *testing.T) {
	// use RunSuites to run suite of suites
	suite.RunSuite(t, new(TestRunningDemoSuite))
}

Вывод в Allure:

Setup hooks

Код теста:

package examples

import (
	"testing"

	"github.com/koodeex/allure-testify/pkg/framework/suite"
)

type BeforeAfterDemoSuite struct {
	suite.Suite
}

func (s *BeforeAfterDemoSuite) BeforeEach() {
	s.NewStep("Before Test Step")
}

func (s *BeforeAfterDemoSuite) AfterEach() {
	s.NewStep("After Test Step")
}

func (s *BeforeAfterDemoSuite) BeforeAll() {
	s.NewStep("Before suite Step")
}

func (s *BeforeAfterDemoSuite) AfterAll() {
	s.NewStep("After suite Step")
}

func (s *BeforeAfterDemoSuite) TestBeforeAfterTest() {
	s.Epic("Demo")
	s.Feature("BeforeAfter")
	s.Title("Test wrapped with SetUp & TearDown")
	s.Description(`
		This test wrapped with SetUp and TearDown containers.`)

	s.Tags("BeforeAfter")
}

func TestBeforesAfters(t *testing.T) {
	t.Parallel()
	suite.RunSuite(t, new(BeforeAfterDemoSuite))
}

Вывод в Allure:

XSkip

Код теста:

package examples

import (
	"testing"

	"github.com/stretchr/testify/require"

	"github.com/koodeex/allure-testify/pkg/framework/suite"
)

type DemoSuite struct {
	suite.Suite
}

func (s *DemoSuite) TestXSkipFail() {
	s.Title("This test skipped by assert with message")
	s.Description(`
		This Test will be skipped with assert Error.
		Error text: Assertion Failed`)
	s.Tags("fail", "xskip", "assertions")

	t := s.T()
	t.XSkip()
	require.Equal(t, 1, 2, "Assertion Failed")
}

func TestDemoSuite(t *testing.T) {
	t.Parallel()
	suite.RunSuite(t, new(DemoSuite))
}

Вывод в Allure:

Comments
  • Фильтрация тестов в go

    Фильтрация тестов в go

    Добрый день, Настраиваем у себя тестопс в связке с go и gitlab, столкнулись с такой проблемой что не работает фильтрация тестов при запуске. Наш пайплайн:

    stages:
      - test
    
    variables:
      ALLURE_LAUNCH_NAME: "${CI_PROJECT_NAME} - ${CI_COMMIT_SHORT_SHA}"
      ALLURE_LAUNCH_TAGS: "regular, ${CI_COMMIT_REF_NAME}"
      ALLURE_TESTPLAN_PATH: "./testplan.json"
      ALLURE_RESULTS: "allure-results"
    
    test:
      image: golang:latest
      stage: test
      before_script:
        - wget https://github.com/allure-framework/allurectl/releases/latest/download/allurectl_linux_386 -O /usr/bin/allurectl
        - chmod +x /usr/bin/allurectl
    
        - allurectl job-run start
        - allurectl job-run plan --output-file ${ALLURE_TESTPLAN_PATH}
    
      script:
        - mkdir -p allure-results
        - allurectl watch --results ${ALLURE_RESULTS} -- go test -v
      after_script:
        - pkill allurectl
    

    При запуске пайплайна есть строки:

    $ allurectl job-run plan --output-file ${ALLURE_TESTPLAN_PATH}
    Save test plan for [7] to file [/builds/test-framework-allure-testops/testplan.json]
    
    Save test plan for [7] to file [/builds/test-framework-allure-testops/tests/acl]
    Running command:  go [test -v]
    

    Из этого сделал вывод что интеграция настроена корректно и проблема непосредственно в allurectl job-run plan --output-file ${ALLURE_TESTPLAN_PATH} что подтвердил Артем Ерошенко

    Просьба взять на доработку

    enhancement good first issue 
    opened by jayjaytrn 21
  • Add parametes for test body

    Add parametes for test body

    New feature: Parameters for test body

    Add funcs:

    • WithParameters(params ...allure.Parameter)
    • WithNewParameters(kv ...interface{})

    Example test:

    import (
    	"fmt"
    	"testing"
    
    	"github.com/ozontech/allure-go/pkg/allure"
    	"github.com/ozontech/allure-go/pkg/framework/provider"
    	"github.com/ozontech/allure-go/pkg/framework/runner"
    )
    
    func TestSampleDemo(t *testing.T) {
    	runner.Run(t, "My test", func(t provider.T) {
    		t.Epic("Only Provider Demo")
    		t.Feature("runner.RunTest")
    
    		t.Title("Some Sample test")
    		t.Description("allure-go allows you to use allure without suites")
    		t.WithParameters(allure.NewParameter("host", "localhost")) // or t.WithNewParameters("host", "localhost")
    
    		t.WithNewStep("Some nested step", func(ctx provider.StepCtx) {
    			ctx.WithNewStep("Some inner step 1", func(ctx provider.StepCtx) {
    				ctx.WithNewStep("Some inner step 1.1", func(ctx provider.StepCtx) {
    
    				})
    			})
    			ctx.WithNewStep("Some inner step 2", func(ctx provider.StepCtx) {
    				ctx.WithNewStep("Some inner step 2.1", func(ctx provider.StepCtx) {
    
    				})
    			})
    		})
    	}, "Sample", "Provider-only", "No provider initialization")
    }
    

    Result: Снимок экрана 2022-07-27 в 18 03 10

    enhancement good first issue 
    opened by mirecl 5
  • Error is not included in the allure report if it is in the BeforeAll hook.

    Error is not included in the allure report if it is in the BeforeAll hook.

    Describe the bug If during the initialization of the suite you add a step with a check that will fall, the entire suite in the allure report is simply ignored. The information in the console is displayed correctly

    To Reproduce

    import (
    	"testing"
    
    	"github.com/ozontech/allure-go/pkg/framework/provider"
    	"github.com/ozontech/allure-go/pkg/framework/suite"
    )
    
    type BeforeAfterDemoSuite struct {
    	suite.Suite
    }
    
    func (s *BeforeAfterDemoSuite) BeforeAll(t provider.T) {
    	t.WithNewStep("Before suite Step", func(sCtx provider.StepCtx) {
    		sCtx.Require().Equal(1, 2, "lol")
    	})
    }
    
    func (s *BeforeAfterDemoSuite) TestBeforeAfterTest(t provider.T) {
    	t.Epic("Demo")
    	t.Feature("BeforeAfter")
    	t.Title("Test wrapped with SetUp & TearDown")
    	t.Description(`
    		This test wrapped with SetUp and TearDown containert.`)
    
    	t.Tags("BeforeAfter")
    }
    
    func TestBeforesAfters(t *testing.T) {
    	t.Parallel()
    	suite.RunSuite(t, new(BeforeAfterDemoSuite))
    }
    

    Expected behavior Display the suite in the report, with an error in the setup and a skipped body of tests.

    bug good first issue 
    opened by AleksandrGurkin 5
  • Странная работа метода t.WithNewStep, t.Step

    Странная работа метода t.WithNewStep, t.Step

    Добрый день

    Сегодня попробовал использовать ваш проект для написания unit тестов, в результате проб возник следующий вопрос: если я в тесте делаю Step (через WithNewStep) и в переданной функции тест фейлится (require не проходит), то в allure отчете все равно данный шаг помечается как успешный. Пример кода, и отчета прилагаю:

    
    type SomeSuite struct {
    	suite.Suite
    }
    
    func (s *SomeSuite) TestSome(t provider.T) {
    	t.WithNewStep("Step 1", func(sCtx provider.StepCtx) {
    		require.Equal(t, 2, 2)
    	})
    	t.WithNewStep("Шаг 2", func(sCtx provider.StepCtx) {
    		require.Equal(t, 2, 3)
    	})
    	t.WithNewStep("Шаг 3", func(sCtx provider.StepCtx) {
    		require.Equal(t, 2, 2)
    	})
    
    }
    
    func TestSkipDemo(t *testing.T) {
    	suite.RunSuite(t, new(SomeSuite))
    }
    

    Аналогично если делать t.Step.

    133a9d3f-db0d-11ec-9001-bce92f7d8cfc-result.zip

    Подскажите, это ожидаемое поведение, или же нет?

    good first issue question 
    opened by anton-ryabkov 3
  • Test setup steps logged in Precondition Allure block

    Test setup steps logged in Precondition Allure block

    Is your feature request related to a problem? Please describe. Now days all test setup steps logged in test steps block

    Describe the solution you'd like I want something like WithTestSetup method in provider.T interface for logging into preconditions block

    enhancement 
    opened by Gorgy33 1
  • Add parameterize semantics

    Add parameterize semantics

    Describe the solution you'd like Parametrization semantics without loops

    Additional context Add test generation based on test cases. Examples:

    enhancement 
    opened by eodnozerkin-ozon 1
  • Add full support of testing TB inteface

    Add full support of testing TB inteface

    add support of testing.TB

    type TB interface {
    	Cleanup(func())
    	Error(args ...any)
    	Errorf(format string, args ...any)
    	Fail()
    	FailNow()
    	Failed() bool
    	Fatal(args ...any)
    	Fatalf(format string, args ...any)
    	Helper()
    	Log(args ...any)
    	Logf(format string, args ...any)
    	Name() string
    	Setenv(key, value string)
    	Skip(args ...any)
    	SkipNow()
    	Skipf(format string, args ...any)
    	Skipped() bool
    	TempDir() string
    }
    
    enhancement 
    opened by apalashkin 1
  • Documentation mistakes in examples for the suite configuration

    Documentation mistakes in examples for the suite configuration

    There are few documentation mistakes in this example for the suite configuration:

    package suite_demo
    
    import (
    	"testing"
    
    	"github.com/ozontech/allure-go/pkg/framework/provider"
    	"github.com/ozontech/allure-go/pkg/framework/runner"
        "github.com/ozontech/allure-go/pkg/framework/suite"
    )
    
    type DemoSuite struct {
    	suite.Suite
    }
    
    func (s *DemoSuite) TestSkip(t provider.T) {
    	t.Epic("Demo")
    	t.Feature("Suites")
    	t.Title("My first test")
    	t.Description(`
    		This test will be attached to the suite DemoSuite`)
    }
    
    func TestSkipDemo(t *testing.T) {
    	t.Parallel()
    	runner.RunSuite(t, new(SkipDemoSuite))
    }
    

    Seems the TestSkipDemo function should be like that:

    func TestSkipDemo(t *testing.T) {
    	t.Parallel()
    	suite.RunSuite(t, new(DemoSuite))
    }
    
    • new(DemoSuite) instead of the new(SkipDemoSuite) cause the SkipDemoSuite struc doesn't exist in the example.
    • suite.RunSuite instead of the runner.RunSuite cause no any RunSuite method for the runner

    Additional info

    Just a picture with the current code example:

    image

    documentation good first issue help wanted 
    opened by homiache 1
  • [Draft] V050

    [Draft] V050

    Massive refactoring of architecture and fixing a lot of issues

    New Features:

    1. Async tests in suites
    2. Async steps everywhere
    3. BeforeAll/AfterAll in runner object
    4. testify's Asserts can be natively wrapped with allure steps
    5. module framework was moved to provider package
    opened by koodeex 1
  • Release/issue 29

    Release/issue 29

    Fixed:

    • parametrized naming (now ParamNameNoPrefix_param)
    • result fileds now pointers (label, parameter)
    • reworked appending labels mechanic (now duplicates now for unique labels)
    bug enhancement 
    opened by koodeex 0
  • Не запускаются все тесты, при запуске нескольких параметризированных тестов с одинаковыми параметрами

    Не запускаются все тесты, при запуске нескольких параметризированных тестов с одинаковыми параметрами

    Если запускать несколько параметризированных тестов с одинаковыми параметрами, у них дублируются названия и из-за этого запускается только первый параметризированый тест.

    bug 
    opened by karishok 0
  • Broken step results in a successful run

    Broken step results in a successful run

    Describe the bug (Probably related to https://github.com/ozontech/allure-go/issues/4)

    A single test with a broken step results in a passed test.

    The test

    func Test_AllureExample(t *testing.T) {
    	runner.Run(t, "Allure demo", func(t provider.T) {
    		t.WithNewStep("First step", func(sCtx provider.StepCtx) {
    			sCtx.Logf("Demo break")
    			sCtx.Broken()
    		})
    	})
    }
    

    The report (exluding labels):

    {
        "name": "Allure demo",
        "fullName": "Test_AllureExample/Allure_demo",
        "status": "passed",
        "statusDetails": {
            "message": "",
            "trace": ""
        },
        "start": 1669278069758,
        "stop": 1669278069758,
        "uuid": "f34c46a8-6bd0-11ed-bd95-a45e60d5053f",
        "historyId": "baa17e747dc3baf09c0ad0b7a00c6251",
        "testCaseId": "3948cbd85816212b9f92d81b0b03b207",
        "labels": [
        ],
        "steps": [
            {
                "name": "First step",
                "status": "broken",
                "start": 1669278069758,
                "stop": 1669278069758
            }
        ]
    }
    

    Note that step has a proper broken status, but the test has a passed status.

    A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Create a single test.
    2. Define one step in the test.
    3. use broken() in this step's function.
    4. Check report.

    Expected behavior The test is marked as Broken in the report.

    Additional context I have some questions regarding this issue:

    1. Is it a bug or is it intended? If intended, how can i apple Broken status to a test?
    2. What should be done either way with provider.T of my test after setting some step to broken()? There is no BreakNow() fn, so i just have to end the test execution naturally after a broken step?
    3. Which go test status (skipped / failed) will be applied to the test, if it s properly set as Broken by the library?
    good first issue 
    opened by Emptyfruit 6
  • Incorrect timing of the test

    Incorrect timing of the test

    Describe the bug In allure report every step of the test has execution time, and if we sum every step time, it will not be equal to duration

    To Reproduce Steps to reproduce the behavior:

    1. Run tests with allure-steps

    Expected behavior Summ of the execution time of steps is equal to duration

    Screenshots Снимок экрана 2022-11-22 в 12 20 33

    Additional context As you can see duration != summ of the time of steps

    opened by ImOsMa 0
  • Request to update Readme.md

    Request to update Readme.md

    Возможно, стоит подсветить обязательность defer перед Teardown и обьяснить почему он нужен, чтобы легче было раскурить этот нюанс без сторонней помощи

    opened by utkinmark 0
  • Test falls in afterEach step

    Test falls in afterEach step

    Describe the bug I am running a test in Suite in gitlab. I had an error in test's step with message "index out of range [0]. Allure was logging an error in the afterEach step instead of an error inside test. Moreover, the element I accessed has len = 1, so this shouldn't be an error.

    To Reproduce Steps to reproduce the behavior:

    1. Used func: suite.RunSuite
    2. What you actually wanted to do: to get test passed :)
    3. What has been expected: noError
    4. What you got actual: error in afterEach step
    5. Error Log (if any): afterEach panicked: runtime error: index out of range [0] with length 0 goroutine 509 [running]: runtime/debug.Stack() /usr/local/go/src/runtime/debug/stack.go:24 +0x65 github.com/ozontech/allure-go/pkg/framework/runner.(*runner).RunTests.func1.3.1.2() /builds/Nx2CE54f/0/bx/pdp-api/.cache/go/pkg/mod/github.com/ozontech/allure-go/pkg/[email protected]/runner/runner.go:182 +0x85 panic({0x14edf00, 0xc000dbee28}) /usr/local/go/src/runtime/panic.go:884 +0x212 gitlab.ozon.ru/bx/pdp-api/e2e/internal/steps.(*Helper).GetDigitalBookLitres.func1() /builds/Nx2CE54f/0/bx/pdp-api/e2e/internal/steps/item.go:111 +0x2a5 gitlab.ozon.ru/marketplace/qa/tools/qa_pack/pkg/utilities.Poll(0x18956c0?, 0xc0004ab6b0?, 0xc000d39198) /builds/Nx2CE54f/0/bx/pdp-api/.cache/go/pkg/mod/gitlab.ozon.ru/marketplace/qa/tools/[email protected]/pkg/utilities/utilities.go:123 +0xfb gitlab.ozon.ru/bx/pdp-api/e2e/internal/steps.(*Helper).GetDigitalBookLitres(0xc00040abd0, {0x18956c0, 0xc0004ab6b0}, {0x18acc20, 0xc0000ef7a0}) /builds/Nx2CE54f/0/bx/pdp-api/e2e/internal/steps/item.go:107 +0x176 gitlab.ozon.ru/bx/pdp-api/e2e/suites.(*WebSmokeSuite).TestWebAddToCartV8wDigitalBook(0xc000072780, {0x18acc20, 0xc0000ef7a0}) /builds/Nx2CE54f/0/bx/pdp-api/e2e/suites/web_suite.go:176 +0x130 reflect.Value.call({0xc000216a20?, 0xc000131830?, 0x30?}, {0x16067f1, 0x4}, {0xc0005a3920, 0x2, 0x18?}) /usr/local/go/src/reflect/value.go:584 +0x8c5 reflect.Value.Call({0xc000216a20?, 0xc000131830?, 0x10?}, {0xc0005a3920?, 0x10?, 0x2561240?}) /usr/local/go/src/reflect/value.go:368 +0xbc github.com/ozontech/allure-go/pkg/framework/runner.(*testMethod).GetBody.func1({0x18acc20?, 0xc0000ef7a0?}) /builds/Nx2CE54f/0/bx/pdp-api/.cache/go/pkg/mod/github.com/ozontech/allure-go/pkg/[email protected]/runner/tests.go:150 +0x2b1 github.com/ozontech/allure-go/pkg/framework/runner.(*runner).RunTests.func1.3.1(0xc000ba9ba0) /builds/Nx2CE54f/0/bx/pdp-api/.cache/go/pkg/mod/github.com/ozontech/allure-go/pkg/[email protected]/runner/runner.go:205 +0x2e7 testing.tRunner(0xc000ba9ba0, 0xc000b8e190) /usr/local/go/src/testing/testing.go:1446 +0x10b created by testing.(*T).Run /usr/local/go/src/testing/testing.go:1493 +0x35f

    Expected behavior If test falls, allure logs error inside test

    opened by ismonsen 0
Releases(v0.6.18)
  • v0.6.18(Sep 2, 2022)

    Release Notes

    allure-go

    • update parametrized examples

    pkg/allure

    Features

    • link, label and param is pointer now
    • add Result.GetFirstLabel()
    • add Result.GetLabels()
    • Result.GetLabel removed

    pkg/framework

    Fixes

    • fix naming of parametrized test - now test name builds as TestNameWithoutPrefix_Param
    • parametrized tests no longer adds in subsuite
    • fixed issue when in one suite few parametrized tests could not ran with same parameteres
    • fixed issue when Suite Containter didn't created at filesystem
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.6.18(Sep 2, 2022)

    Release notes

    Fixes

    • Fix naming of parametrized test - now test name builds as TestNameWithoutPrefix_Param
    • parametrized tests no longer adds in subsuite
    • fixed issue when in one suite few parametrized tests could not ran with same parameteres
    • fixed issue when Suite Containter didnot created at filesystem
    Source code(tar.gz)
    Source code(zip)
  • pkg/allure/v0.6.4(Sep 2, 2022)

  • v0.6.17(Aug 23, 2022)

    Release Notes

    • Add Setup test example
    • readme.md update

    pkg/framework

    Features

    • ⚡ Add ⚡
      • T.WitTestSetup(func(t provider.T))
      • T.WithTestTearDown(func (t provider.T))

    Methods should be used for interactions with allure.Container inside of the test.

    Check readme for more.

    • T.Title now consume (args ...interface{}) for using as fmt.Sprint
    • t.Description now consume (args ...interface{}) for using as fmt.Sprint
    • Add T.Titlef(format string, args ...interface{}) for using as fmt.Sprintf
    • Add T.Descriptionf(format string, args ...interface{}) for using as fmt.Sprintf
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.6.17(Aug 23, 2022)

    Release Notes

    Features

    • Add t.WitTestSetup(func(t provider.T)) and t.WithTestTearDown(func (t provider.T)) for interactions with allure.Container inside of the test. Check readme for more.
    • t.Title now consume (args ...interface{}) for using as fmt.Sprint
    • t.Description now consume (args ...interface{}) for using as fmt.Sprint
    • add t.Titlef(format string, args ...interface{}) for using as fmt.Sprintf
    • add t.Descriptionf(format string, args ...interface{}) for using as fmt.Sprintf
    Source code(tar.gz)
    Source code(zip)
  • v0.6.16(Aug 22, 2022)

    Release Notes:

    Features

    • add faker to dependencies (for examples)
    • add table test example
    • Readme updates

    pkg/allure (v0.6.3)

    Features

    • Add ToJSON() ([]byte, error) method to the Result object. It marshall Result to the JSON and returns error if any.
    • Add ToJSON() ([]byte, error) method to the Container object. It marshall Container to the JSON and returns error if any.
    • Add Done() error method to the Container object. It works same as Result.Done method.
    • Now Result.Done() returns error if any.

    pkg/framework (v0.6.16)

    Features

    Major:

    Parametrized tests

    Now you can run your parametrized tests in new way at GO

    • ❓ How to use it?
    1. You need extend your suite struct with array of parameters. Its name MUST be like ParamTestNameWithoutPrefix. i.e. if your test named like TableTestCities so param should have name ParamCities
    2. You need to create test method that will take your parameter as second argument after provider.T. Test name ** MUST** have prefix TableTest instead of just Test. i.e. TableTestCities.

    Simple example:

    package suite_demo
    
    import (
    	"testing"
    
    	"github.com/jackc/fake"
    	"github.com/ozontech/allure-go/pkg/framework/provider"
    	"github.com/ozontech/allure-go/pkg/framework/suite"
    )
    
    type ParametrizedSuite struct {
    	suite.Suite
    	// ParamCities param has name as expected test but has prefix Param instead of TableTest
    	ParamCities []string
    }
    
    func (s *ParametrizedSuite) BeforeAll(t provider.T) {
    	for i := 0; i < 10; i++ {
    		s.ParamCities = append(s.ParamCities, fake.City())
    	}
    }
    
    // TableTestCities is parametrized test has name prefix TableTest instead of Test
    func (s *ParametrizedSuite) TableTestCities(t provider.T, city string) {
    	t.Parallel()
    	t.Require().NotEmpty(city)
    }
    
    func TestNewParametrizedDemo(t *testing.T) {
    	suite.RunSuite(t, new(ParametrizedSuite))
    }
    

    Allure Output: example_table_test

    runner.RunTests and suite.RunSuites ouput:

    Now runner.RunTests and suite.RunSuites returns interface SuiteResult. It contains all information about tests that you can use to customize your allure integrations

    Minor:

    • reworked test collecting
    • now errors in file creations will be logging as t.Error
    • provider.T.Run now returns allure.Result pointer
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.6.16(Aug 22, 2022)

    Release notes

    Features

    Major:

    Parametrized tests

    Now you can run your parametrized tests in new way at GO

    • ❓ How to use it?
    1. You need extend your suite struct with array of parameters. Its name MUST be like ParamTestNameWithoutPrefix. i.e. if your test named like TableTestCities so param should have name ParamCities
    2. You need to create test method that will take your parameter as second argument after provider.T. Test name ** MUST** have prefix TableTest instead of just Test. i.e. TableTestCities.

    Simple example:

    package suite_demo
    
    import (
    	"testing"
    
    	"github.com/jackc/fake"
    	"github.com/ozontech/allure-go/pkg/framework/provider"
    	"github.com/ozontech/allure-go/pkg/framework/suite"
    )
    
    type ParametrizedSuite struct {
    	suite.Suite
    	// ParamCities param has name as expected test but has prefix Param instead of TableTest
    	ParamCities []string
    }
    
    func (s *ParametrizedSuite) BeforeAll(t provider.T) {
    	for i := 0; i < 10; i++ {
    		s.ParamCities = append(s.ParamCities, fake.City())
    	}
    }
    
    // TableTestCities is parametrized test has name prefix TableTest instead of Test
    func (s *ParametrizedSuite) TableTestCities(t provider.T, city string) {
    	t.Parallel()
    	t.Require().NotEmpty(city)
    }
    
    func TestNewParametrizedDemo(t *testing.T) {
    	suite.RunSuite(t, new(ParametrizedSuite))
    }
    

    Allure Output: example_table_test

    runner.RunTests and suite.RunSuites ouput:

    Now runner.RunTests and suite.RunSuites returns interface SuiteResult. It contains all information about tests that you can use to customize your allure integrations

    Minor:

    • reworked test collecting
    • now errors in file creations will be logging as t.Error
    • provider.T.Run now returns allure.Result pointer
    Source code(tar.gz)
    Source code(zip)
  • pkg/allure/v0.6.3(Aug 20, 2022)

    Release Notes

    Features

    • Add ToJSON() ([]byte, error) method to the Result object. It marshall Result to the JSON and returns error if any.
    • Add ToJSON() ([]byte, error) method to the Container object. It marshall Container to the JSON and returns error if any.
    • Add Done() error method to the Container object. It works same as Result.Done method.
    • Now Result.Done() returns error if any.
    Source code(tar.gz)
    Source code(zip)
  • v0.6.15(Aug 16, 2022)

    Release Notes v0.6.15

    pkg/framework

    Features

    Add following asserts:

    • Exactly
    • Same
    • NotSame
    • EqualValues
    • NotEqualValues
    • EqualError
    • ErrorIs
    • ErrorAs
    • ElementsMatch
    • DirExists
    • Condition
    • Zero
    • NotZero

    Add features:

    • LogStep(args ...interface{}) for provider.T and provider.StepCtx interfaces Works as t.Log(args ...interface{}), but also creates allure.Step at report

    • LogfStep(format string, args ...interface{}) for provider.T and provider.StepCtx interfaces Works as t.Logf(format string, args ...interface{}) but also creates allure.Step at report

    Bugfixes

    • Wrong parent suite setting for no-suite tests
    • Duplicate test's name in FullName field at report
    • Fixed error displaying while before hook fails
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.6.15(Aug 16, 2022)

    Release Notes v0.6.15

    Features

    Add following asserts:

    • Exactly
    • Same
    • NotSame
    • EqualValues
    • NotEqualValues
    • EqualError
    • ErrorIs
    • ErrorAs
    • ElementsMatch
    • DirExists
    • Condition
    • Zero
    • NotZero

    Add features:

    • LogStep(args ...interface{}) for provider.T and provider.StepCtx interfaces Works as t.Log(args ...interface{}), but also creates allure.Step at report

    • LogfStep(format string, args ...interface{}) for provider.T and provider.StepCtx interfaces Works as t.Logf(format string, args ...interface{}) but also creates allure.Step at report

    Bugfixes

    • Wrong paren suite setting for no-suite tests
    • Duplicate test's name in FullName field at report
    • Fixed error displaying while before hook fails
    Source code(tar.gz)
    Source code(zip)
  • v0.6.14(Jul 28, 2022)

    Release Notes

    pkg/allure

    Features

    • Add Parameter field (type []allure.Parameter) to allure.Result object

    pkg/framework

    Features

    • Add T.WithParameters method. It adds array of allure.Parameter to the test body
    • Add T.WithNewParameters method. It creates new Allure.Parameters and attach them to the report body.
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.6.14(Jul 28, 2022)

    Release Notes

    Features

    • Add T.WithParameters method. It adds array of allure.Parameter to the test body
    • Add T.WithNewParameters method. It creates new Allure.Parameters and attach them to the report body.
    Source code(tar.gz)
    Source code(zip)
  • pkg/allure/v0.6.2(Jul 28, 2022)

  • v0.6.13(Jul 26, 2022)

    Release v0.6.13

    pkg/framework

    Features:

    • add JSONContains assert
      • JSONContains verifies if passed "actual" json contains passed "expected" json

    Example:

             exp1 := `{"key1": 123, "key3": ["foo", "bar"]}`
             exp2 := `{"key1": 321, "key3": ["foobar", "bar"]}`
    	 actual := `{"key1": 123, "key2": "foobar", "key3": ["foo", "bar"]}`
    
    	JSONContains(mockT, expValid, actual) // passed cause "actual" contains exp1 json
    	JSONContains(mockT, expNotValid, actual) // failed cause "actual" does not contain exp2 json
    
    • add Regexp assert
      • Regexp assert verifies if passed string is valid for passed regexp

    Example:

    	rx := `^start`
    	str1 := "start of the line"
            str2 := "of the line"
    
    	Regexp(mockT, rx, str1) // passed cause str1 matches regexp (rx)
    	Regexp(mockT, rx, str2) // failed cause str2 does not match regexp (rx)
    

    NOTE: new asserts available from require/assert packages and from t.Require()/t.Assert() methods

    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.6.13(Jul 26, 2022)

    Release v0.6.13

    Features:

    • add JSONContains assert
      • JSONContains verifies if passed "actual" json contains passed "expected" json

    Example:

             exp1 := `{"key1": 123, "key3": ["foo", "bar"]}`
             exp2 := `{"key1": 321, "key3": ["foobar", "bar"]}`
    	 actual := `{"key1": 123, "key2": "foobar", "key3": ["foo", "bar"]}`
    
    	JSONContains(mockT, expValid, actual) // passed cause "actual" contains exp1 json
    	JSONContains(mockT, expNotValid, actual) // failed cause "actual" does not contain exp2 json
    
    • add Regexp assert
      • Regexp assert verifies if passed string is valid for passed regexp

    Example:

    	rx := `^start`
    	str1 := "start of the line"
            str2 := "of the line"
    
    	Regexp(mockT, rx, str1) // passed cause str1 matches regexp (rx)
    	Regexp(mockT, rx, str2) // failed cause str2 does not match regexp (rx)
    

    NOTE: new asserts available from require/assert packages and from t.Require()/t.Assert() methods

    Source code(tar.gz)
    Source code(zip)
  • v0.6.12(Jul 8, 2022)

  • pkg/framework/v0.6.12(Jul 8, 2022)

  • v0.6.11(Jul 6, 2022)

    Release Notes:

    Repo updates

    v0.6.7 fixes

    • Add windows to make demo support
    • Add windows and linux support to make install

    v0.6.10 updates

    • Add mixed async example

    v0.6.11 updates

    • Update readme.md
    • Mixed async example tagging improved

    pkg/allure

    v0.6.0 fixes

    pkg/framework

    v0.6.0 fixes

    NEW FEATURES:

    • Now all tests will be created if suite setup failed. They will be marked as unknown status
    • Add testplan.json support for Allure TestOps
    • Reworked work with asyncs

    FIXED ISSUES

    • Fixed async steps issue
    • Fixed deadlocks in single tests run

    v0.6.1 fixes:

    • TestPlan now singleton that allows avoid multiple search of testplan.json
    • Add testplan.json filter for runner.Run(...) and provider.T.Run(...) functions

    v0.6.6 fixes:

    • Tests now run under mid-layer test, that fix all async issues and deadlocks
    • GetTestPlan() now run with sync.Once wrapper

    v0.6.7 fixes:

    • Add relative path support for test plan feature
    • Fixed issue, when suite ran before/after hooks even if all tests in suite was ignored with test plan

    v0.6.8 fixes:

    • Now suites totally ignored with testplan json marking as skipped

    v0.6.9 fixes:

    • Fixed issue, when on unix could ignore first / in path to testplan.json

    v0.6.10 fixes:

    • fixed naming issue for tests and suites
    • fixed issue when any subtests paniced but marked as failed instead of broken
    • ADD Fatal and Fatalf support due to ISSUE-11

    v0.6.11 fixes:

    • Step.FailNow() now fail test before finishing
    • Add Name, Fail, FailNow and Skipf support due ISSUE-11
    • BeforeAll panic case fix
    • README.md updated
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.6.11(Jul 6, 2022)

    Release Notes:

    v0.6.0 fixes

    NEW FEATURES:

    • Now all tests will be created if suite setup failed. They will be marked as unknown status
    • Add testplan.json support for Allure TestOps
    • Reworked work with asyncs

    FIXED ISSUES

    • Fixed async steps issue
    • Fixed deadlocks in single tests run

    v0.6.1 fixes:

    • TestPlan now singleton that allows avoid multiple search of testplan.json
    • Add testplan.json filter for runner.Run(...) and provider.T.Run(...) functions

    v0.6.6 fixes:

    • Tests now run under mid-layer test, that fix all async issues and deadlocks
    • GetTestPlan() now run with sync.Once wrapper

    v0.6.7 fixes:

    • Add relative path support for test plan feature
    • Fixed issue, when suite ran before/after hooks even if all tests in suite was ignored with test plan

    v0.6.8 fixes:

    • Now suites totally ignored with testplan json marking as skipped

    v0.6.9 fixes:

    • Fixed issue, when on unix could ignore first / in path to testplan.json

    v0.6.10 fixes:

    • fixed naming issue for tests and suites
    • fixed issue when any subtests paniced but marked as failed instead of broken
    • ADD Fatal and Fatalf support due to ISSUE-11

    v0.6.11 fixes:

    • Step.FailNow() now fail test before finishing
    • Add Name, Fail, FailNow and Skipf support due ISSUE-11
    • BeforeAll panic case fix
    • README.md updated
    Source code(tar.gz)
    Source code(zip)
  • pkg/allure/v0.6.1(Jul 6, 2022)

  • v0.5.8(Apr 21, 2022)

    Release Notes

    pkg/framework

    interfaces

    StepCtx

    • signature for WithNewStep and WithNewAsyncStep functions changed, ctx StepCtx now sCtx StepCtx
    • add Name() string function. Returns test name

    T

    • signature for WithNewStep and WithNewAsyncStep functions changed, ctx StepCtx now sCtx StepCtx
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.5.8(Apr 21, 2022)

    Release Notes

    interfaces

    StepCtx

    • signature for WithNewStep and WithNewAsyncStep functions changed, ctx StepCtx now sCtx StepCtx
    • add Name() string function. Returns test name

    T

    • signature for WithNewStep and WithNewAsyncStep functions changed, ctx StepCtx now sCtx StepCtx
    Source code(tar.gz)
    Source code(zip)
  • v0.5.7(Apr 20, 2022)

    Release Notes

    pkg/framework

    Interfaces

    • Now provider.T and provider.StepCtx work same with attachments

    New Contributors

    • @siller174 made their first contribution in https://github.com/ozontech/allure-go/pull/2

    Full Changelog: https://github.com/ozontech/allure-go/compare/v0.5.6...pkg/framework/v0.5.7

    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.5.7(Apr 20, 2022)

    Release Notes

    Interfaces

    • Now provider.T and provider.StepCtx work same with attachments

    New Contributors

    • @siller174 made their first contribution in https://github.com/ozontech/allure-go/pull/2

    Full Changelog: https://github.com/ozontech/allure-go/compare/v0.5.6...pkg/framework/v0.5.7

    Source code(tar.gz)
    Source code(zip)
  • v0.5.6(Apr 15, 2022)

  • pkg/framework/v0.5.6(Apr 15, 2022)

  • pkg/allure/v0.5.6(Apr 15, 2022)

  • v0.5.4(Apr 12, 2022)

    Release Notes

    pkg/framework Hotfix Notes

    Test running

    • Fixed after all hook work for tests without parallel

    Steps

    • Fixed WithNewStep finish time
    Source code(tar.gz)
    Source code(zip)
  • pkg/framework/v0.5.4(Apr 12, 2022)

  • v0.5.3(Apr 7, 2022)

Owner
Ozon Tech
ozon.ru open source projects
Ozon Tech
This is from the udemy course: Go: The Complete Developer's Guide (Golang)

Go Udemy course - "Go: The Complete Developer's Guide (Golang)" How to run the file: go run hello-world.go go run <filename>.go GO CLI commands: go ru

null 1 Oct 22, 2021
Go: The Complete Developer's Guide (Golang) Udemy Course by Stephen Grider

Go-The-Complete-Developers-Guide Go Command line tools 1. go build - compiles a bunch of go source code files go build

PramodRawate 0 Dec 29, 2021
Official provider for VMware desktop products: Fusion, Player, and Workstation.

Vagrant VMware Desktop Providers This is the common codebase for the official providers for VMware desktop products: Fusion, Player, and Workstation.

HashiCorp 183 Nov 15, 2022
System resource usage profiler tool which regularly takes snapshots of the memory and CPU load of one or more running processes so as to dynamically build up a profile of their usage of system resources.

Vegeta is a system resource usage tracking tool built to regularly take snapshots of the memory and CPU load of one or more running processes, so as to dynamically build up a profile of their usage of system resources.

Kartik 8 Jan 16, 2022
Partial fork of testify framework with allure integration

allure-testify Оглавление Demo Getting started Examples Global environments keys How to use suite Allure info Test info Label Link Allure Actions Step

null 3 Dec 1, 2021
simple-jwt-provider - Simple and lightweight provider which exhibits JWTs, supports login, password-reset (via mail) and user management.

Simple and lightweight JWT-Provider written in go (golang). It exhibits JWT for the in postgres persisted user, which can be managed via api. Also, a password-reset flow via mail verification is available. User specific custom-claims also available for jwt-generation and mail rendering.

Max 30 Oct 12, 2022
Provider-generic-workflows - A generic provider which uses argo workflows to define the backend actions.

provider-generic-workflows provider-generic-workflows is a generic provider which uses argo workflows for managing the external resource. This will re

Shailendra Sirohi 0 Jan 1, 2022
Disk usage analyzer with console interface written in Go

Gdu is intended primarily for SSD disks where it can fully utilize parallel processing. However HDDs work as well, but the performance gain is not so huge.

Daniel Milde 2.1k Nov 23, 2022
OpenAPI Terraform Provider that configures itself at runtime with the resources exposed by the service provider (defined in a swagger file)

Terraform Provider OpenAPI This terraform provider aims to minimise as much as possible the efforts needed from service providers to create and mainta

Daniel I. Khan Ramiro 221 Nov 8, 2022
Terraform provider to help with various AWS automation tasks (mostly all that stuff we cannot accomplish with the official AWS terraform provider)

terraform-provider-awsutils Terraform provider for performing various tasks that cannot be performed with the official AWS Terraform Provider from Has

Cloud Posse 24 Oct 1, 2022
provider-kafka is a Crossplane Provider that is used to manage Kafka resources.

provider-kafka provider-kafka is a Crossplane Provider that is used to manage Kafka resources. Usage Create a provider secret containing a json like t

Crossplane Contrib 18 Oct 29, 2022
Terraform Provider for Azure (Resource Manager)Terraform Provider for Azure (Resource Manager)

Terraform Provider for Azure (Resource Manager) Version 2.x of the AzureRM Provider requires Terraform 0.12.x and later, but 1.0 is recommended. Terra

null 0 Oct 16, 2021
provider-kubernetes is a Crossplane Provider that enables deployment and management of arbitrary Kubernetes objects on clusters

provider-kubernetes provider-kubernetes is a Crossplane Provider that enables deployment and management of arbitrary Kubernetes objects on clusters ty

International Business Machines 2 Jan 5, 2022
stratus is a cross-cloud identity broker that allows workloads with an identity issued by one cloud provider to exchange this identity for a workload identity issued by another cloud provider.

stratus stratus is a cross-cloud identity broker that allows workloads with an identity issued by one cloud provider to exchange this identity for a w

robert lestak 1 Dec 26, 2021
Terraform-provider-mailcow - Terraform provider for Mailcow

Terraform Provider Scaffolding (Terraform Plugin SDK) This template repository i

Owen Valentine 0 Dec 31, 2021
Terraform-provider-buddy - Terraform Buddy provider For golang

Terraform Provider for Buddy Documentation Requirements Terraform >= 1.0.11 Go >

Buddy 1 Jan 5, 2022
Hashicups-tf-provider - HashiCups Terraform Provider Tutorial

Terraform Provider HashiCups Run the following command to build the provider go

Andrew Xie 1 Jan 10, 2022
Terraform-provider-e2e-network - Terraform Provider Scaffolding (Terraform Plugin SDK)

This template repository is built on the Terraform Plugin SDK. The template repository built on the Terraform Plugin Framework can be found at terraform-provider-scaffolding-framework.

eSadhana 0 Jan 19, 2022
Terraform-provider-vercel - Terraform Vercel Provider With Golang

Vercel Terraform Provider Website: https://www.terraform.io Documentation: https

Vercel 75 Nov 20, 2022
Provider-milvus - Milvus provider for crossplane

provider-milvus provider-milvus is a minimal Crossplane Provider that is meant t

The Milvus Project 2 Feb 9, 2022