import java.util.*;
import java.io.*;
public class e{
    static class Pair{
        int x,y,d;
        Pair(int x,int y,int d){
            this.x=x;
            this.y=y;
            this.d=d;
        }
    }
    static int [] row={-1,0,1,0};
    static int [] col={0,1,0,-1};
    static boolean  valid(int r,int c,boolean [][] visited,
    int n,int m,char [][] ch){
        return r>=0 && c>=0 && r<n && c<m && !visited[r][c] && ch[r][c]!='#';
    }
    static void put(char [][] ch,int i,int j,int n,int m){
        if((i-1)>=0 && ch[i-1][j]=='.'){//upward side
            ch[i-1][j]='#';
        }
        if((j-1)>=0 && ch[i][j-1]=='.'){//left side
            ch[i][j-1]='#';
        }
        if((i+1)<n && ch[i+1][j]=='.'){//bottom side
            ch[i+1][j]='#';
        }
        if((j+1)<m && ch[i][j+1]=='.'){//right side
            ch[i][j+1]='#';
        }
    }
    public static void main(String [] args){
        Scanner sc=new Scanner(System.in);
        int t=sc.nextInt();
        while(t-->0){
            int n=sc.nextInt();
            int m=sc.nextInt();
            char [][] ch=new char[n][m];
            for(int i=0;i<n;i++){
                ch[i]=sc.next().toCharArray();
            }

            int cntg=0;
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){

                    if(ch[i][j]=='B'){
                        put(ch,i,j,n,m);
                    }
                    else if(ch[i][j]=='G'){
                        cntg++;
                    }
                }
            }

            boolean [][] visited=new boolean[n][m];
            Queue<Pair> q=new LinkedList<>();
            q.add(new Pair(n-1,m-1,0));
            visited[n-1][m-1]=true;
            while(!q.isEmpty()){
                Pair p=q.poll();
                int x=p.x;
                int y=p.y;
                int d=p.d;
                for(int i=0;i<4;i++){
                    if(valid(x+row[i],y+col[i],visited,n,m,ch)){
                        q.add(new Pair(x+row[i],y+col[i],d+1));
                        visited[x+row[i]][y+col[i]]=true;
                    }
                }

            }
            boolean valid=true;
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    if(ch[i][j]=='B' && visited[i][j]){
                        valid=false;
                    }
                    else if(ch[i][j]=='G' && !visited[i][j]){
                        valid=false;
                    }
                }
            }

            if(cntg==0){
                System.out.println("Yes");
            }
            else if(ch[n-1][m-1]=='#'){
                System.out.println("No");
            }
            else {
                if(valid)System.out.println("Yes");
                else System.out.println("No");
            }
            
        }
    }
}