ANOVA, as a likelihood ratio test, can take any two nested models and compare them. This assesses the main effects (equivalent to joint test of appropriate regression model coefficients). And one can do this for a linear model, but also a generalized model, like logistic regression, general additive model, quantile regression model and so on - whenever the residual variance or deviance can be determined. The R anova() command does it.
Of course, the classic ANOVA we are taught also works this way - it compares a model with intercept only and with the effect we assess. It compares them via F test and we have the classic ANOVA.
Of course all those models have different assumptions. So why exactly we need the homogeneity of variance and normality of residuals? Doesn't it correspond only to general linear model? Why do THESE assumptions have to be meet if ANOVA can deal with all those models, including GLM, GAM, GLS estimated LM and so on? Is this because of the desired statistical properties if the underlying model is the linear one?