import java.io.*;
import java.util.*;
public class Ishu
{
    static Scanner scan = new Scanner(System.in);
    static boolean[][] visited = new boolean[1][1];
    static void solve(char[][] ch, int n, int m, int i, int j)
    {
    visited[i][j] = true;
    if(i - 1 >= 0 && ch[i-1][j] != '#' && !visited[i-1][j])
        solve(ch,n,m,i-1,j);
    if(i + 1 < n && ch[i+1][j] != '#' && !visited[i+1][j])
        solve(ch,n,m,i+1,j);
    if(j - 1 >= 0 && ch[i][j-1] != '#' && !visited[i][j-1])
        solve(ch,n,m,i,j-1);
    if(j + 1 < m && ch[i][j+1] != '#' && !visited[i][j+1])
        solve(ch,n,m,i,j+1); 
    }
    static void tc()
    {
    int n = scan.nextInt();
    int m = scan.nextInt();
    char[][] ch = new char[n][m];
    int i,j;
    
    for(i=0;i<n;++i)
        {
        String str = scan.next();
        ch[i] = str.toCharArray();
        }
    boolean ans = true;
    for(i=0;i<n;++i)
        for(j=0;j<m;++j)
            {
            if(ch[i][j] == 'B')
                {
                if(i - 1 >= 0 && ch[i-1][j] == 'G')
                    ans = false;
                else if(i + 1 < n && ch[i+1][j] == 'G')
                    ans = false;
                else if(j - 1 >= 0 && ch[i][j-1] == 'G')
                    ans = false;
                else if(j + 1 < m && ch[i][j+1] == 'G')
                    ans = false; 
                } 
            }
    if(!ans)
        System.out.println("No");
    else
        {
        for(i=0;i<n;++i)
            for(j=0;j<m;++j)
                {
                if(ch[i][j] == 'B')
                    {
                    if(i - 1 >= 0 && ch[i-1][j] == '.')
                        ch[i-1][j] = '#';
                    if(i + 1 < n && ch[i+1][j] == '.')
                        ch[i+1][j] = '#';
                    if(j - 1 >= 0 && ch[i][j-1] == '.')
                        ch[i][j-1] = '#';
                    if(j + 1 < m && ch[i][j+1] == '.')
                        ch[i][j+1] = '#'; 
                    } 
                }
        visited = new boolean[n][m];
        if(ch[n-1][m-1] != '#')
            {
            visited[n-1][m-1] = true;
            i = n - 1;
            j = m - 1;
            
            if(i - 1 >= 0 && ch[i-1][j] != '#' && !visited[i-1][j])
                solve(ch,n,m,i-1,j);
            if(i + 1 < n && ch[i+1][j] != '#' && !visited[i+1][j])
                solve(ch,n,m,i+1,j);
            if(j - 1 >= 0 && ch[i][j-1] != '#' && !visited[i][j-1])
                solve(ch,n,m,i,j-1);
            if(j + 1 < m && ch[i][j+1] != '#' && !visited[i][j+1])
                solve(ch,n,m,i,j+1);  
            }
        for(i=0;i<n;++i)
            for(j=0;j<m;++j)
                if(ch[i][j] == 'G' && !visited[i][j])
                    {
                    ans = false;
                    break;
                    }
        System.out.println(ans ? "Yes" : "No");
        }
    }
    public static void main(String[] args)
    {
    int t = 1;
    t = scan.nextInt();
    while(t-- > 0)
        tc();
    }
}
