Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Complete Allure provider in Go which doesn't overload the interface usage. Maintenance mode, see https://github.com/ozontech/testo
| Date | Stars |
|---|---|
| 2026-07-24 | 401 |
| 2026-07-25 | 401 |
| 2026-07-28 | 401 |
| 2026-07-30 | 401 |
| 2026-08-06 | 401 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
> [!IMPORTANT]
> Take a look at the [Testo framework](https://github.com/ozontech/testo) and its [Allure plugin](https://github.com/ozontech/testo-allure).
> Allure-Go is now in maintenance mode, with new changes limited to fixing critical bugs.
>
> **Why?** Allure-Go served us well for many years, but it longer fits our needs.
> We were limited by its built-in features and the fact that the core framework's architecture
> is indivisible from the Allure reporting - hence the name.
>
> **Can it happen again with Testo?** No. Testo features a plugin system, which helps
> the core framework remain lean while providing more independent features through external plugins.
>
> We are grateful to every Allure-Go contributor and welcome everyone to help us make
> [Testo framework](https://github.com/ozontech/testo) better!
# Allure-Go

Allure-Go - the project that provides a complete allure provider in go, without overloading the interface of usage. <br>
The project started as a fork of testify, but over time it got its own runner and its own features. <br>
## :mortar_board: Head of contents
+ [:mortar_board: Head of contents](#mortar_board-head-of-contents)
+ [:zap: Features](#zap-features)
+ [WHAT'S NEW](#whats-new)
+ [pkg/allure](#sparkles-pkgallure)
+ [pkg/framework](#sparkles-pkgframework)
+ [:beginner: Getting Started with framework!](#beginner-getting-started-with-framework)
+ [No Suite tests](#no-suite-tests)
+ [Runner](#runner)
+ [Suite](#suite)
+ [:wrench: Configure your environment!](#wrench-configure-your-environment)
+ [:smirk: Going Deeper...](#smirk-going-deeper)
+ [pkg/allure](#pkgallure)
+ [pkg/framework](#pkgframework)
+ [cute](#cute)
+ [:school_satchel: Few more examples](#school_satchel-few-more-examples)
+ [:rocket: Async test](#async-test)
+ [Test with nested steps](#test-with-nested-steps)
+ [Test with attachments](#test-with-attachment)
+ [Run few parallel suites](#run-few-parallel-suites)
+ [Setup hooks](#setup-hooks)
+ [Access test status in hooks](#access-test-status-in-hooks)
+ [XSkip](#xskip)
+ [:rocket: Parametrized tests](#parametrized-test)
+ [Setup test](#setup-test)
+ [Prevent loosing allureID in test results](#Prevent-loosing-allureID-in-test-results)
## :zap: Features
Providing a separate package allows you to customize your work with allure.<br>
### What's new?
**New Feature: Access Test Status in AfterEach Hook**
#### GetCurrentTestResult method
Now you can access test execution result in `AfterEach` hook:<br>
- `t.GetCurrentTestResult()` - returns current test result with status and details (read-only copy)<br>
This allows you to perform conditional actions based on test status (Passed, Failed, Broken, Skipped).<br>
**Basic Example:**
```go
func (s *MySuite) AfterEach(t provider.T) {
result, ok := t.GetCurrentTestResult()
if ok && result.Status == allure.Failed {
// Save screenshot only for failed tests
screenshot := takeScreenshot()
t.WithNewAttachment("failure.png", allure.ImagePng, screenshot)
// Check error message
if strings.Contains(result.StatusDetails.Message, "Setup failed") {
t.Log("Test didn't run - BeforeEach hook failed, skipping cleanup")
}
}
}
```
**How it works with BeforeEach failures:**
When `BeforeEach` fails, the test doesn't run, but you can still detect the failure in `AfterEach`:
```go
func (s *MySuite) BeforeEach(t provider.T) {
// This will fail
t.Require().True(false, "Setup failed")
}
func (s *MySuite) AfterEach(t provider.T) {
result, ok := t.GetCurrentTestResult()
if ok && result.Status == allure.Failed &&
strings.Contains(result.StatusDetails.Message, "Setup failed") {
t.Log("BeforeEach failed - test was not executed")
}
}
```
**Important Notes:**
:information_source: This feature **does not change** hook or test behavior - it only provides read-only access to tExcerpt of 26,157 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:f4feaf3e6564e129, topic:testing